Zookeeper是一种重量级的针对分布式的大型协调系统,是Hadoop的子项目。
他有如下几个功能:
1.选举出leader,所有的写请求都会被转发的leader,然后由leader广播给所有follower,保证数据的一致性
2.如果leader挂掉,用选举算法,会再选举出leader,
3.配置文件的同步更新,类似isync的功效
4.分布式锁服务,应该是用了Fast Paxos算法。
缺陷:
需要给每个zookeeper 1G左右的内存,如果可能的话,最好有独立的磁盘。 (独立磁盘可以确保zookeeper是高性能的。
提高了对运维的要求,和维护时的复杂度
由于zookeeper的写入需要通过leader,然后这个写入的消息需要传播到半数以上的follower通过才能是完整写入,所以整个集群中写入的性能无法通过增加服务器数量达到目的,相反,整个集群中follower数量越多,整个集群写入的性能越差。
zookeeper集群中的每一台服务器可以提供数据的读取服务,所有整个集群中的服务器数量越多,读取的性能就约好。但follower增加又会降低整个集群的写的能力
发生故障的时,排查问题加大了难度,底层不是自己实现的
他的优势在我们的服务器中使用必要性并不大,使用它带来的内存占用,磁盘的要求,对运维的要求,维护代价的提高,都不是我们想要的。