ZooKeeper从它的名字上就很好理解,【Zoo - 动物园,Keeper - 管理员】动物园中有很多种动物,这里的动物就可以比作分布式环境下多种多样的服务,而ZooKeeper做的就是管理这些服务。
ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。同时为分布式应用提供协调服。
ZooKeeper提供服务主要就是通过:数据结构 + 原语集 + watch机制达到的。
主要用于实现分布式系统中常见的发布/订阅、负载均衡、命令服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
它具有以下特性:
顺序一致性:从同一个客户端发起的事务请求,最终都会严格按照其发起顺序被应用到 ZooKeeper 中
原子性:所有事务请求的处理结果在整个集群中所有机器上都是一致的;不存在部分机器应用了该事务,而另一部分没有应用的情况
单一视图:所有客户端看到的服务端数据模型都是一致的;
可靠性:一旦服务端成功应用了一个事务,则其引起的改变会一直保留,直到被另外一个事务所更改
实时性:一旦一个事务被成功应用后,ZooKeeper 保证客户端立即可以感知到这个事务变更后的最新状态