-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
集群leader选举问题 #3652
Comments
nacos的自建的raft,修改数据和发起的同步 任期是+100, 选举的任期+1。如果ABC有数据在更新, 那么选举的所加的任期是很难超过的。 |
那我问一下,如果一开始leader 就是D ,那么A,B,C 进行选举,选出leader 为A ,这样会不会有双leader 现象呢 |
需要满足过半的要求 |
一开始leader 就是D 呀,应该网络问题,DC 暂时和ABC 连不上,导致ABC 进行选举,A 收到了3票,已经过半了呀,这样A ,D 都是leader 了 |
你这个属于网络分区的问题,要看最后两个leader的term以及log index,但是对于nacos自建的raft,只能比较term,跟随大的 |
但是如果出现了双leader 不会有问题? |
对于nacos自建的raft是会有问题的,其原因在于,另一个分区中的Leader是能够处理请求 |
对呀,我看源码也发现了会有双leader 问题,虽然只有一个leader 能个接受新服务注册,不会有数据丢失,但是如果请求发送到另一个leader 就会导致服务注册不成功 |
这个问题后期才解决吗 |
1.4版本计划替换成Jraft,应该就不会有问题了 |
Refer to #3635 |
问题场景:五个节点ABCDE,其中A,B,C 在一个网段Net1,其中A 为leader; D,E在另外一个网段Net2;那么Net2由于某种原因,某短暂时间不能和Net1通信,导致net2 节点D,E 进行leader选举,term 任期不断加1,而此时有服务注册,使ABC 节点服务数据有新增;
那么问题来了,当Net1和Net2网络恢复正常了,此时D 发起leader选举,由于term>A,B,C ,有可能选举通过并且最后成为leader ,这样就会造成数据丢失,因为A,B,C 的数据明显多于D,最后通过心跳 会把其它节点数据保存和新leaderD一制;数据成功丢失
这是我看代码的理解,不知道会不会有这种现象,麻烦解答一下呢
The text was updated successfully, but these errors were encountered: