【源码阅读】节点管理

 

最早的节点管理是在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

 
posted @ 2023-06-25 18:56  xutao_ustc  阅读(190)  评论(0)    收藏  举报