简介
zookeeper是一个开放源代码的分布式协调服务。目标是将复杂的分布式一致性服务封装起来,并提供简单易用的接口。
zookeeper 是什么?
是一个分布式数据一致性的解决方案,分布式应用可以基于它实现发布订阅、负载均衡、命名服务、协调通知、集群管理、master选举、分布式锁和分布式队列的特性。
保证了什么样的一致性?
顺序一致性
原子性
单一视图(每个节点的数据都是相同的)
可靠性
实时性(有限的时间内的最终一致性)
设计目标
高性能 - 解决高吞吐量问题
高可用 - 解决单点问题
严格顺序访问能力 - 实现复杂的同步原语
四个设计目标:
简单的数据模型(高性能)
提供分布式程序共享的、树状结构的名字空间(内存中以ZNode为数据节点构成的树型数据模型)来相互协调。构建集群(高可用)
集群中有一半以上的机器能正常工作,就能正常对外服务。
客户端与任一台服务器建立TCP连接,断开后能自动与其他机器建立连接。顺序访问(严格顺序访问)
对于客户端请求,zk都会分配一个全局递增的事务id,反映事务操作的先后顺序。以此来实现更高层次的同步原语。高性能
全量数据存在于内存中。适合于多读操作。
参考:《从PAXOS到ZOOKEEPER分布式一致性原理与实践》