sofastack / sofa-jraft

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

想问下,如果init config只有一个节点的情况下,启动raft server是如何变成leader的呢,因为这个集群只有一个raft node,无法与其他节点进行通信,进行pre vote,vote的过程 #1011

Closed developerdujunjie closed 1 year ago

developerdujunjie commented 1 year ago

Your question

解释下,系统只有一个raft节点的场景下,节点从启动后,从follower到candidate到leader的过程

Your scenes

通过zk服务发现机制,动态添加raft node,发现,只有一个node的情况下,该node也会成为leader,感觉跟raft论文所讲的,至少需要3个节点,才能进行leader选举和日志复制不相符。

Your advice

jraft是不是发现init config只有一个节点的情况下,会立即将启动后的raft node变更为leader,而跳过选举过程

Environment

killme2008 commented 1 year ago

jraft是不是发现init config只有一个节点的情况下,会立即将启动后的raft node变更为leader,而跳过选举过程

单个节点就没有所谓一致性问题,我忘了论文有没有去阐述这个场景,但是从 raft 要解决的问题角度出发,直接选为 leader 并没有问题,这可能只是一个类库 API 设计上的抉择。