菜鸡求问,zk广播模式下的两阶段提交怎么保证一致性,如果…

菜鸡求问,zk广播模式下的两阶段提交怎么保证一致性,如果第二阶段提交时候,leader发到follower的commit请求网络故障了,那岂不是连最终一致都保证不了?

薛宝琴说:如果leader发出commit之前挂了,那么zk做选举的时候会抛弃这个提交,抛弃这个节点做新的leader.如果发出commit之后提交挂了,那么zk会在已经收到commit的节点中选新的节点,并且把这个proposal 进行数据同步,提交到各个节点的对列中。 个人理解,探讨探讨

前腾讯员工说:M

薛宝琴说:如果leader发出commit之前挂了,那么zk做选举的时候会抛弃这个提交,抛弃这个节点做新的leader.如果发出commit之后提交挂了,那么zk会在已经收到commit的节点中选新的节点,并且把这个proposal 进行数据同步,提交到各个节点的对列中。 个人理解,探讨探讨

包不同说:m

程序猿.殷梨亭说:zk不是paxos协议吗,怎么扯到了二阶段协议

程序猿.狐媚胡梅尔斯说:zk用的zab协议吧,没用paxos

程序猿.狐媚胡梅尔斯说:zk不一定会在收到commit的节点中选出新节点,只能说epoch值大的更可能成为leader。

马岱说:m

三石兄弟说:m

楼主说:你指的都是leader挂了的情况吧,如果leader没挂,仅仅是向follower发送commit的时候,某个follower因为网络故障没收到commit,那这个follower超时时间后回滚事务,不就造成不一致了吗

薛宝琴说:首先只需要大多数commit就可以服务,然后没有进行数据同步的节点,不会加入真正可用的follower列表中

薛宝琴说:你说的没错,我是这么理解的,因为当前leader是处理这个事务挂掉了,那么这种情况下,应该他就是最大的值了吧

前陌陌员工说:楼上说的对吧!我再看看源码,这个问题从来没注意

光云科技员工说:m

程序猿.狐媚胡梅尔斯说:但是如果这个最大值的节点在发出投票前,其他节点已经完成了过半投票,那它就不能成为leader,只能回滚同步了。只是它成为leader的可能性比其他节点大。我是这么理解的

前华为员工说:m

程序猿.鹤笔翁说:follower挂掉重新找到leader以后,leader会对follower的数据进行修正。

程序猿.此花名不花说:M

程序猿.非洲吴彦祖说:m

潘璋说:2pc 其中有一个节点没收到commit确认消息,就全部回滚了吧

前陌陌员工说:不会的,

北京东方网信有限公司员工说:m

程序猿.工藤优作说:m