菜鸡求问,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