参考蚂蚁课堂
1.Zookeeper集群存在的问题
假如说我现在有一个集群,里面原来有3个节点,1个Leader两个Follower,这个时候假如说Leader积劳成疾,死而后已,出师未捷身先死,那么这个团队需要一个新的领导者,这个领导者必须得从剩余的两个Follower里面选择。在假如说这个团队发展壮大了,有1个Leader和4个Follower,这个时候Leader英年早逝之后,是从剩下的4个Follower里面选举出一个新的Leader,那么4选1就比2选1要更加复杂,假如说新增的节点越来越多,那么就会造成集群选举的时候有过多的竞争者觊觎王位,这会直接导致王位竞争内卷化,长此以往势必会导致天下大乱,也就是说集群不可用。
2.Zookeeper节点类型
- Leader类型:领导者类型,负责写的请求,和各个节点同步
- Follower类型:跟随者类型,负责读的请求和投票决议
- ObServer类型:观察者和Follower大部分特征都是一样的,唯一的区别是不能参与选举和投票。
Observer类型能够解决上述集群选举中的选举低效问题,因为Observer它本身不参与选举,也就是说他不是什么皇亲国戚,对王位根本构不成威胁,所以竞争还是那几个人在竞争,这大大提高了选举的效率。