分布式服务框架分布式服务框架Zookeeper入门学习入门学习
ZooKeeper介绍
ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务,是Google的Chubby一个开源的实现。
提供功能:
命名服务
配置管理
集群管理
分布式锁
队列管理
特性:
顺序一致性:从同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到ZooKeeper中。
原子性:所有事务请求的结果在集群中所有机器上的应用情况是一致的,也就是说要么整个集群所有集群都成功应用了某一个
事务,要么都没有应用,一定不会出现集群中部分机器应用了该事务,而另外一部分没有应用的情况。
单一视图:无论客户端连接的是哪个ZooKeeper服务器,其看到的服务端数据模型都是一致的。
可靠性:一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会被一直保留下
来,除非有另一个事务又对其进行了变更。
实时性:通常人们看到实时性的第一反应是,一旦一个事务被成功应用,那么客户端能够立即从服务端上读取到这个事务变更
后的最新数据状态。这里需要注意的是,ZooKeeper仅仅保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新
的数据状态。
Zookeeper的角色
领导者(leader):负责进行投票的发起和决议,更新系统状态,一个ZooKeeper集群同一时刻只会有一个Leader,其他都是
Follower或Observer。
学习者(learner):包括跟随者(follower)和观察者(observer)。
follower用于接受客户端请求并向客户端返回结果,在选主过程中参与投票。
Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了
扩展系统,提高读取速度。
客户端(client),请求发起方。
注意:ZooKeeper默认只有Leader和Follower两种角色,没有Observer角色。为了使用Observer模式,在任何想变成
Observer的节点的配置文件中加入:peerType=observer,并在所有server的配置文件中,配置成observer模式的server的那
行配置追加:observer,例如:server.1:localhost:2888:3888:observer
Follower和Observer区别:Follower和Observer都能提供读服务,不能提供写服务。两者唯一的区别在于,Observer机器不参
与Leader选举过程,也不参与写操作的『过半写成功』策略,因此Observer可以在不影响写性能的情况下提升集群的读性
能。
Zookeeper架构