在ZooKeeper的运维过程中,我们经常会碰到这样的问题,就是快照数据文件越来越大,但是ZooKeeper上的数据节点数量并没有相应的增加。 这说明什么问题:一定是有客户端在将ZooKeeper当数据库使用了。长此以往,必然会引起ZooKeeper内存数据过大而影响性能及集群间的数据同步。
无论使用哪种Leader选举方法,一个机器要想成为Leader,都必须具备以下两点: - Leader一定是所有机器中zxid最新的。 - 集群中必须大于等于quorum台机器同意。 当一个Leader被选出后,那么其余的机器都会和这个机器来连接上,并开始同步状态。如果一个Follower落后的状态过多的话,那么就会将整个snapshot同步给他。 新的Leader会根据当前最大的zxid来确定下次开始的zxid。当所有的Follower已经和Leader保持同步之后,Leader会向所有的Follower发出“NEW_LEADER”的提议,一旦过半的机器接受了这个提议, 也就是说这个提议能够被提交,接下去Leader才被真正激活,并开始对外服务:开始接收新的请求并处理。 这个算法听起来有点复杂,但实际上,只要遵守一下4点就可以选出Leader - Follower在和Leader保持同步之后,就会对“NEW_LEADER”提议响应ACK。 - A follower will only ACK a NEW_LEADER proposal with a given zxid fro
【ZooKeeper Notes 23】Leader选举-来自邮件列表
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号