ZooKeeper各服务角色介绍
在ZooKeeper集群中,分别有Leader、Follower和Observer三种类型的服务器角色。
Leader
Leader服务器是整个ZooKeeper集群工作机制中的核心,其主要工作有以下两个:
a. 事务请求的唯一调度和处理者,保证集群事务处理的顺序性。
b. 集群内部各服务器的调度者
Follower
从名字上可以看出,Follower服务器是ZooKeeper集群状态的跟随者,其主要工作:
a. 处理客户端非事务请求,转发事务请求给leader服务器。
b. 参与事务请求Proposal的投票
c. 参与Leader选举投票
Observer
Observer是ZooKeeper3.3.0版本之后引入的一个全新的服务器角色。
字面意思来看,该服务器充当一个观察者的角色——观察zookeeper集群的最新状态变化并将这些状态变更同步过来。
Observer服务器在工作原理上和Follower基本是一致的,对于非事务请求,都可以进行独立的处理,而对于事务请求,则会转发给Leader服务器进行处理。
它和Follower唯一的区别在于,Observer不参与任何形式的投票。
简单的说,Observer服务器只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力。
数据同步
在之前<ZooKeeper_13_服务启动>一文中说过,learner服务器向leader服务器完成注册之后,就进入了数据同步环节。
简单地讲,数据同步过程就是Leader服务器将那些没有在Learner服务器上提交过的事务请求同步给Learner服务器。
原文中分析的比较细,这里细节不讲,感兴趣的同学可以看下书
直接差异化同步、先回滚再差异化同步、仅回滚同步、全量同步