已经被处理的消息不能丢

当 leader 收到合法数量 follower 的 ACKs 后,就向各个 follower 广播 COMMIT 命令,同时也会在本地执行 COMMIT 并向连接的客户端返回「成功」。但是如果在各个 follower 在收到 COMMIT 命令前 leader 就挂了,导致剩下的服务器并没有执行都这条消息。

图中的C2就是一个典型的例子,在集群正常运行过程的某一个时刻,Server1是leader服务器,先后广播了消息P1、P2、C1、P3和C2.其中当leader服务器把消息C2(Commit事务proposal2)发出后就立即崩溃退出了,那么针对这种情况,ZAB协议就需要确保事务Proposal2最终能够在所有的服务器上都能被提交成功,否则将会出现不一致

猜你喜欢

转载自blog.csdn.net/Leon_Jinhai_Sun/article/details/112912447