sofastack / sofa-jraft

A production-grade java implementation of RAFT consensus algorithm.
https://www.sofastack.tech/projects/sofa-jraft/
Apache License 2.0
3.53k stars 1.12k forks source link

关于replicator的数量 #184

Closed Yuanxiangz closed 5 years ago

Yuanxiangz commented 5 years ago

Your question

replicator的数量我看到是配置里的initialServerList决定的,也就是有几台机器就有几个replicator?不知道是不是我看错了或者有其他方式指定

Your scenes

Describe your use scenes (why need this feature)

Your advice

Describe the advice or solution you'd like

Environment

killme2008 commented 5 years ago

一个 follower 对应一个 replicator,并不需要指定,也没有参数来指定。

Yuanxiangz commented 5 years ago

抱歉我没表述清楚,follower 的数量是配置里的initialServerList决定的 如果这样有多少endpoint就有多少follower-1(除去leader) 这么多follower都会有一个数据备份 这样备份会很多 jraft能否实现类似elasticsearch的模式 实现如下 4台机器4个region 每个region3个副本

server1: 1,2,3 server2: 2,3,4 server3: 3,4,1 server4: 4,1,2

killme2008 commented 5 years ago

这个就是 multi raft group 的,你完全可以这么做,只是需要自己去维护这个关系,可以参考 rheakv 的设计

https://github.com/sofastack/sofa-jraft/wiki/JRaft-RheaKV-%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97#rheakv-%E7%AE%80%E4%BB%8B

Yuanxiangz commented 5 years ago

能否加一个参数指定replica count,通过pd去管理 不知道有没有这个计划 集群大的话通过配置去维护副本数会比较吃力 你说的是指通过RegionEngineOptions来配置是吧 通过配置维护的关系应该也不能region split是吧 因为分裂后没有参数限制该生成几个replica

fengjiachun commented 5 years ago

能否加一个参数指定replica count,通过pd去管理 不知道有没有这个计划 集群大的话通过配置去维护副本数会比较吃力 你说的是指通过RegionEngineOptions来配置是吧 通过配置维护的关系应该也不能region split是吧 因为分裂后没有参数限制该生成几个replica

本质上应该是需要一个管控系统,根据指定参数 replica count 以及整个集群的机器列表,然后自动生成一份配置列表,SOFAJRaft 启动时从这个管控系统读取配置,不知道我是否理解对了

通过配置维护的关系应该也不能region split是吧 因为分裂后没有参数限制该生成几个replica

split 后的 replica 数量取决于 parent region 的 replica 数量,减少或增加需要通过 cliService#addPeer/removePeer 这个也可以做到管控系统中,目前就是缺少一个管控系统

Yuanxiangz commented 5 years ago

好的 了解 多谢 我看代码一直没找到这部分,以为哪儿漏了 有一个管控系统就方便很多

fengjiachun commented 5 years ago

在大规模集群里应用和部署 SOFAJRaft,建议可以开发一个简单的管控系统,把 CliService 封装成 web 控制台,还可以通过 RheaKV client 连接并获取 PD server 上存储的所有 peers stats 数据

fengjiachun commented 5 years ago

没更多问题的话先关闭了