1.Zookeeper介绍
ZooKeeper是一个开放源代码的分布式协调服务,由知名互联网公司雅虎创建,是Google的Chubby的开源实现。ZooKeeper的设计目标是将那些复杂且容易出错的分布一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。
Zookeeper是什么
ZooKeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。ZooKeeper可以保证如下分布式一致性特性。
- 顺序一致性。从同一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到Zookeeper中去。
- 原子性。所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,也就是说,要么整个集群所有机器都成功应用了某一个事务,要么都没应用,一定不会出现集群中部分机器应用了事务,而另外一部分没有应用的情况。
- 单一视图。无论客户端连接的是哪个Zookeeper服务器,其看到的服务器端数据模型都是一致的。
- 可靠性。一旦服务器端成功应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务器端状态的改变将会一直保留下去,除非 有另一个事务又对其进行了变更。
- 实时性。通常人们看到实时性的第一发应是,一旦一个事务被创建成功,那么客户端能够立即从服务器端上读取到这个事务变更后的最新数据状态。这里需要注意的是,Zookeeper仅仅保证在一定时间段内,客户端最终一定能够从服务器端读取到最新的数据状态。
Zookeeper的设计目标
Zookeeper致力于提供一个高性能、高可用且具有严格的顺序访问控制能力(主要是写操作的严格顺序性)的分布式协调服务。高性能使得Zookeeper能够应用于那些对系统吞吐有明确要求的大型分布式系统中,高可用使得分布式的单点问题得到了很好地解决,而严格的顺序访问控制使得客户端能够基于Zookeeper实现复杂的同步原语。下面我们来具体看一下Zookeeper的四个设计目标。