zookeeper入门简介
定义
Zookeeper是一个分布式服务框架,主要用来解决分布式应用中经常遇到的一些数据管理问题,为分布式应用提供一致性服务,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
特性
∙ 顺序一致性——从同一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到Zookeeper中去。
∙ 原子性——所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,即整个集群要么都成功应用了某个事务,要么都没有应用。
∙ 单一视图——无论客户端连接的是哪个Zookeeper服务器,其看到的服务端数据模型都是一致的。
∙ 可靠性——一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直被保留,除非有另一个事务对其进行了变更。
∙ 实时性——Zookeeper保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。
zookeeper集群
Zookeeper 是一个由多个 server 组成的集群,包含了一个 leader和多个 follower。leader 为客户端服务器提供读写服务,除了leader外其他的机器(即follower)只能提供读服务。
集群角色
∙ Leader
Zookeeper集群的主节点,负责响应所有对Zookeeper状态变更的请求。
∙ Follower
Zookeeper集群状态的跟随者,负责响应服务器上的读请求,参与leader的选举。
∙ Observer
服务器充当一个观察者的角色。ZooKeeper负责接受客户端连接,将写请求转发给 leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度。
zookeeper的基本运转过程
1、选举Leader;
2、同步数据;
3、选举Leader过程中算法有很多,但要达到的选举标准是一致的;
4、Leader要具有最高的执行ID,类似root权限;
5、集群中大多数的机器得到响应并接受选出的Leader。
Leader选举
集群初始化启动时
(前提:若进行leader 选举,则至少需要两台机器。)
1、每个server发出一个投票;
2、接受来自各个服务器的投票;
3、处理投票;
4、统计投票;
5、改变服务器状态。
集群运行期间leader重选
(前提:在Zookeeper运行期间,如果Leader节点挂了,那么整个Zookeeper集群将暂停对外服务,进入新一轮Leader选举)
1、变更状态;
2、每个server发出一个投票;
3、接受来自每个服务器的投票;
4、处理投票;
5、统计投票;
6、改变服务器状态。
Zookeeper服务端处理流程
1、client向follower发送请求,若为非事务请求,则自己处理并返回;若为事务请求则进行下一步;
2、follower向leader转发事务请求;
3、leader向follower发起proposol过程;
4、follower执行并返回结果;
5、leader接受响应,过半则返回成功,否则认为失败。并将结果反馈给client连接到的follower;
6、follower将结果反馈给client。