背景
ZooKeeper是一款开源的分布式应用的分布式协调服务。它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。
其特点如下:
- 虽然是内存数据库,但提供持久化功能,通过快照和事务日志将数据持久化到磁盘,即使服务器关闭,依然可以恢复本地数据
ZooKeeper
提供的数据类型单一,且每个ZNode
最多存放1MB数据,但提供了顺序结点和临时结点ZooKeeper
提供了强大的监听功能,客户端可以作为观察者获取数据更改的通知ZooKeeper
是一个分布式的产品,在少于半数的服务器宕机的情况下依然可以对外提供服务,并且在保持高可用性的同时通过leader选举,数据同步和原子广播保证了强一致性ZooKeeper
中只有leader可以处理写操作,保证了客户端的写请求顺序执行- 可以根据
ZooKeeper
提供的功能进行扩展,完成如分布式锁,分布式队列,leader选举等功能(如集群中每个服务器在同一路径下创建一个临时顺序子结点,创建的最小顺序的结点成为leader,同时在最小结点上注册监听事件,则可实现leader选举,并且旧leader宕机时可重新选举新leader).详见curator官网Recipes
目录
总结
我fork了一份apache/zookeeper
的源码,在学习的过程中填加了很多注释,供大家参考pfjia/zookeeper
参考
- Zookeeper总览(翻译自Zookeeper官方网站Release 3.4.11版本)
- ZooKeeper官网介绍
- 从Paxos到Zookeeper:分布式一致性原理与实践 (书中介绍Paxos算法的部分是根据Paxos的论文直接翻译而来,且有些术语翻译不准确,如将proposal和value都翻译为”提案”,导致我第一次看该书无法理解Paxos算法,也没有坚持下去.后来第二次再看该书时,由于看了Paxos算法的论文,对Paxos有了大致了解,最后将该书全部看完,书中后面部分介绍的非常清楚,如Zookeeper技术内幕.建议看该书时一定要参考Paxos算法的论文)
- 【Zookeeper】源码分析目录
- Zookeeper源码与思考