Bifrost icon indicating copy to clipboard operation
Bifrost copied to clipboard

集群方案讨论

Open mikawudi opened this issue 3 years ago • 2 comments

基于etcd的embed模式 预计方案设计 当启动Bifrost的时候,指定集群参数(nodeName, client, peerurl, clienturl等等etcd需要的参数) Bifrost等待其他节点加入 当所有节点加入以后, etcd所有的节点开始watch key(配置前缀和元数据前缀和位点前缀) leader将自己本地的ini配置,元数据配置,位点信息,put进etcd的kv引擎中,同步给所有其他节点 每一个从节点开始监听自己是否变成master节点,当成为master节点后会根据当前节点列表,以及元数据中的db列表,生成一份db分配到哪一个节点的资源分配表 每个node都会监听资源分配表,来决定在本节点启动哪几个dbslave,同步binlog以及推给target

每当节点下线或者新增删除db信息,资源表会被master更新,所有node重新关闭/启动dbslave协程

每个node会定时同步自己正在执行的db的position信息到etcd

以上为简要描述,后续考虑添加流程图及相关信息完善

mikawudi avatar Sep 24 '20 09:09 mikawudi

用户在进入一个管理界面,可以查看所有节点的数据源和同步, 是每个节点上都保存着所有数据源的配置吗? 只是非本节点运行的,就不运行还是怎么样呢?

jc3wish avatar Sep 26 '20 14:09 jc3wish

节点之间使用etcd的kvstore,所以本质上来说是所有节点上都保存着所有数据源的(任何一个节点对kvstore的操作都会根据raft来同步到所有node上), leader会根据node上下线情况,更新一张分配数据源在节点上执行的资源分配标,同样更新进etcd的kvstore中,每个节点都会根据这个标,看到自己节点应该运行哪些数据源,非分配到本节点的不执行,只执行分配到本节点的

mikawudi avatar Sep 27 '20 01:09 mikawudi