这篇文章主要讲解了“Zookeeper中的ZAB协议是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Zookeeper中的ZAB协议是什么”吧!
ZAB协议是为Zookeeper专门设计的一种支持崩溃恢复的消息广播协议。ZAB协议只允许有一个主进程接受客户事务请求并处理,即leader。当leader收到请求后,将请求事务转化为事务proposal,由于leader会为每一个follower创建一个队列,将该事务放入响应队列,保证事务的顺序性。之后会在队列中顺序向其他节点广播该提案,follower收到后会将其以事务的形式写入到本地日志中,并向leader发送反馈ack确认。leader会等待其他followe的回复,当收到一半以上的follower响应时,leader会向其他节点发送commit消息,同时提交该提案。
ZAB有两种模式,分别为故障恢复模式以及消息广播。当系统启动或者leader服务器出现故障等现象时,进入故障恢复模式。将会开启新的一轮选举,选举产生的leader会与过半的follower进行同步,使数据一致。
当同步结束后,退出恢复模式,进入消息广播模式。当一台遵从ZAB协议的服务器启动后,如果检测到有leader在广播消息,会自动进入恢复模式,当其完成与leader的同步之后,进入消息广播模式;如果集群中的非leader节点收到客户端请求,非leader节点会先将请求发送到leader服务器。
故障恢复发时候,ZAB协议两个需要保证的地方,第一就是ZAB协议需要保证已经被leader提交的事务最终被所有的机器提交;第二就是需要保证丢弃那些只在leader上提交的事务。为了保证以上两点,选举时如果选择ZXID最大的节点可以解决上述问题。
leader重新选举的条件是当leader宕机或发生故障,集群中少于一半的节点与当前leader保持连接。
感谢各位的阅读,以上就是“Zookeeper中的ZAB协议是什么”的内容了,经过本文的学习后,相信大家对Zookeeper中的ZAB协议是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。