【源码阅读】节点管理
最早的节点管理是在BE节点的配置文件中写入fe节点的地址。BE节点在启动时,将知道fe节点的地址并加入集群。但是这样的机制会有一些问题,有时候一个测试节点接入到了线上集群,这种随意的操作测试会导致集群的拓扑结构不可控。
节点管理的目的是对节点进行认证,实现一个节点发现和认证机制。
FE节点管理
● Follower
○ master
○ 非master
● Observer
为什么要有两类节点?
● Follower保证元数据写高可靠 - FE节点负责元数据存储,当元数据修改时,会记录一条元数据的操作日志,这条操作日志会同时写到所有的follower节点中,在大多数follower节点都写入成功这条元数据操作日志以后,这条元数据操作才真正成功。
● Observer保证元数据读的扩展性 - 如果只有Follower这一类节点的话,如果要横向扩展FE节点的话,在写入元数据的时候,所需要写入节点的数量也会增加。
元数据启动过程
1. 确定元数据目录
2. 获取节点信息和Helper信息
3. 获取集群信息和角色 - getClusterIdAndRole
4. 加载元数据
5. 启动状态监听
getClusterIdAndRole
|
Myself |
Helper |
|
|
存在ROLE和Version |
后续启动 |
X (将忽略helper) |
|
不存在ROLE和Version |
第一次启动 |
拉取 |
1. Myself + 不存在ROLE和Version:生成ROLE文件,生成VERSION文件。生成Frontend并加入
2. Myself + 存在ROLE和Version:读取ROLE文件,读取VERSION文件
3. Helper + 存在ROLE和Version: 转2
4. Helper + 不存在ROLE和Version:
FE节点启动方式
● --version : 打印FE版本
● --helper : 加入bdb je replication group时指定的help节点
● --image : Check if the specified image is valid
● --bdb : Run bdbje debug tools
○ --listdb : List databases in bdbje
○ --db : Specify a database in bdbje
■ --stat : Print statistic of a database, including count, first key, last key
■ --from : Specify the start scan key
■ --to : Specify the end scan key
■ --metaversion : Specify the meta version to decode log value

浙公网安备 33010602011771号