9 ,zk 架构模型

一 ,leader 与 follower

1 ,架构图 :

9 ,zk 架构模型_第1张图片

2 ,zk 集群一个什么类型的集群 :主备集群

     1 个主节点,其它全是备份节点。

3 ,过半原则 :

     在 zk 的框架中,要想做点什么,不是看一台机器,而是看全体机器,需要有一半以上的机器同意才能办。例如新增数据,是否新增成功,不是看一台两台机器是否成功的存储了数据,而是要看整个集群,超过一半的机器成功的存储到数据,才认为存储成功了。

4 ,为什么我们的 zk 集群需要 3 台机器 ?

  1. zookeeper 集群启动也是要遵循过半原则的 : 要超过一半的机器启动,才认为整个集群已经启动了。
  2. zookeeper 集群需要有奇数台机器,比如 3 台,只要有 2 台机器启动成功,就认为集群启动成功了。
  3. 为什么不能 1 台,1 也是奇数 :当然不行,如果一共才一台,那就不叫集群了,也就没有了数据的备份了,这台机器如果坏了,数据就没了,zookeeper 是干嘛的,不就是为了高可用嘛,不就是为了备份嘛。
  4. 为什么不能两台:因为两台,没有办法过半,只能达到一半,不能超过一半。所有的偶数都不好办,都不容易造成过半。
  5. 结论:除了 1 以外,最小的奇数就是 3 了。也可以 5 台机器,但是我们同学的电脑都是普通电脑,禁不起 5 台虚拟机的消耗,所以我们最后决定用 3 台。

5 ,主节点 :leader

  1. 负责处理数据更新等操作( 遵守 zab 协议 )。
  2. zab 协议简介 :( 了解 )
    1 ,消息广播 :为了数据的一致性,leader 将数据内容通知整个集群。
    2 ,崩溃恢复 :如果 leader 挂了,那么 zookeeper 集群,将会从 follower 中重新选举一个 leader

6 ,备份节点 :follower

  1. 可以接受客户端请求。
  2. 可以自行解决查询任务。
  3. 不可以擅自进行数据更新操作,数据更新操作必须严格经过 leader 来操作。
  4. 选举:如果 leader 挂了,follower 之间可以互相投票,注意喽,follower 也是有可能成为 leader 的。

二 ,Observer ( 观察者节点 )

1 ,完整的 zookeeper 架构模型 :

9 ,zk 架构模型_第2张图片

2 ,zookeeper 集群中的节点,其实有 3 种角色 :

  1. leader :集群中的主节点。
    是整个集群的管理者,参与集群的全部工作内容,可以支配从节点。
  2. follower :集群中的从节点 ( 备份节点 )。
    集群中的备份节点,服从 leader 的命令,当 leader 挂了以后,follower 参与选举,每个 follower 都有成为 leader 的可能性。
    所以,就算 leader 挂了也不会怎么样,follower 之间可以重新选一个 leader 出来,zookeeper 集群依然可以正常工作。
  3. observer :集群中的观察者节点。
    功能跟 follower 相似,但是不参与 leader 选举,就相当于 observer 是一个世外高人,他只干活,他不是 leader ,也不是 follower ,他只想要过平淡的生活,他不投票给任何人,他自己也拒绝被人家投票,他就相当于永远只做集群的备份节点。

3 ,observer 的配置 :( 了解 )

  1. 假如,我们存在第四台机器,那么,我们要在第四台机器的 zoo.cfg 文件中加这么一行 :
# 本节点是 observer 节点	
peerType=observer
  1. 第四台机器的 myid 文件内容 :
4
  1. 每一台机器的 zoo.cfg 文件都加这样的一行配置 :
# 第四台机器是 observer 节点
server.4:node04:2181:3181:observer

4 ,observer 作用 :提高性能

    由于观察节点不参与写请求过程中达成共识的投票,因此使用观察节点可以让ZooKeeper集群在不影响写性能的情况下提高读操作的性能。

你可能感兴趣的:(9 ,zk 架构模型)