Zookeeper集群详解

Zookeeper集群角色

Leader:领导者,一个Zookeeper集群同一时间只能有一个Leader,,Leader服务器是整个Zookeeper集群工作制中的核心,其主要工作有以下:

  • 事务请求的唯一调度和处理者,保证集群事务处理的顺序性。Zookeeper中所有事务操作都是由leader服务器进行处理。
  • 集群内部服务器的调用者。
  • 接受所有的Follower的提案请求并统一协调发起提案投票,负责与所有Follower进行内部数据交换(同步)。

Follower:跟随者,主要工作:

  • 处理客户端的非事务请求,并转发事务请求给Leader服务器。
  • 参与事务请求的同步提交投票。同时与Leader进行数据交换(同步)。
  • 参与Leader选举投票。

Observer:观察者,从Zookeeper3.3.0引入的一个全新的服务器角色,该服务器充当一个观察者角色,观察Zookeeper集群的最新状态变化,并将这些状态变更同步过来。Observer服务器在工作原理上和Follower基本一致,对于非事务请求,可以直接独立处理,而对于事务请求,则会转发给Leader服务器进行处理。和Follower唯一区别是,Observer不参与任何形式投票,包括事务请求提交投票、Leader选举投票。仅仅观察集群状态变化并把变化同步过来。

Observer不属于Zookeeper的关键部位,通常用于在不影响集群事务处理能力的前提下提升进去非事务处理的能力,就是不影响集群写性能的情况下,提高集群读性能。因为使用增加Follower固然会提高集群的读性能,但是也会降低集群事务处理的写性能。因为Follower太多的话,会把时间浪费在事务投票同步过程和Leader选举过程中,因为要通信、投票的机器多了。而Observer不参与任何形式投票,仅仅只是进行读操作。所以增加再多Observer也不会影响集群的写性能,反而能够提升集群的读性能。但是Observer太多,而Follower太少的话会降低系统的可用性。

Zookeeper集群中有一半以上的机器正常工作的话,集群对外提供的服务就是可用的。假如有1个Leader,100个Follower,那么就算有50台机器宕机,集群照样可用。假设现在采用1个Leader,10个Follower,90个Observer的话,只要集群里面有大于5台机器宕机,集群就会处于不可用状态,至少处理不了事务请求,因为事务投票需要一半以上的同意,而可用的Leader加Follower已经不足一半了。

Zookeeper集群环境配置步骤:

https://blog.****.net/liuchang19950703/article/details/109745825

上一篇:【设计模式】【行为型】【观察者模式】Observer Design Pattern


下一篇:angular脚手架中echart使用遇到问题(一)