Zookeeper(二)节点类型和选举机制

1、Zookeeper特点

  1. Zookeeper:一个领导者(Leader),多个跟随者(follower)组成的集群。
  2. Leader负责进行投票的发起和决议,更新系统状态。
  3. Follower用于接收客户请求并向客户端返回结果,在选举机制中参与 投票。
  4. 集群中只要有半数以上节点存活,Zookeeper 集群就能正常服务。 全局数据一致:每个 server保存一份相同的数据副本,client 无论连接到哪 个 server,数据都是一致的。
  5. 更新请求顺序进行,来自同一个 client 的更新请求按其发送顺序依次执行。
  6. 数据更新原子性,一次数据更新要么成功,要么失败。
  7. 实时性,在一定时间范围内,client 能读到最新数据。

2、数据结构

2.1 类型

需要明确集中形式 znode 的不同点。尤其是持久化和短暂性节点。
1、Znode 有两种类型:
短暂(ephemeral):客户端和服务器端断开连接后,创建的节点自己删除。
持久(persistent):客户端和服务器端断开连接后,创建的节点不删除。
2、Znode 有四种形式的目录节点(默认是 persistent )
(1)持久化目录节点(PERSISTENT) 客户端与 zookeeper 断开连接后,该节点依旧存在。
(2)持久化顺序编号目录节点(PERSISTENT_SEQUENTIAL)
客户端与 zookeeper 断开连接后,该节点依旧存在,只是 Zookeeper 给该节点名称进行顺序编号。
(3)临时目录节点(EPHEMERAL)
客户端与 zookeeper 断开连接后,该节点被删除。
(4)临时顺序编号目录节点(EPHEMERAL_SEQUENTIAL)
客户端与 zookeeper 断开连接后,该节点被删除,只是 Zookeeper 给该节点 名称进行顺序编号。

3、选举机制

  1. 半数机制:集群中半数以上机器存活,集群可用。所以 zookeeper 适合装 在奇数台机器上。
  2. Zookeeper 虽然在配置文件中并没有指定 master 和 slave。但是,zookeeper 工作时,是有一个节点为
    leader,其他则为 follower,Leader 是通过内部的选举 机制临时产生的。
  3. 以一个简单的例子来说明整个选举的过程。 假设有五台服务器组成的 zookeeper 集群,它们的 id 从 1-5,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的。假设 这些服务器依序启动,来看看会发生什么。
    在这里插入图片描述
    (1)服务器 1 启动,此时只有它一台服务器启动了,它发出去的报没有任 何响应,所以它的选举状态一直是 LOOKING 状态。
    (2)服务器 2 启动,它与最开始启动的服务器 1 进行通信,互相交换自己 的选举结果,由于两者都没有历史数据,所以 id 值较大的服务器 2 胜出,但是 由于没有达到超过半数以上的服务器都同意选举它(这个例子中的半数以上是 3),所以服务器 1、2 还是继续保持 LOOKING 状态。
    (3)服务器 3 启动,根据前面的理论分析,服务器 3 成为服务器 1、2、3 中的老大,而与上面不同的是,此时有三台服务器选举了它,所以它成为了这次 选举的 leader。
    (4)服务器 4 启动,根据前面的分析,理论上服务器 4 应该是服务器 1、2、 3、4 中最大的,但是由于前面已经有半数以上的服务器选举了服务器 3,所以它 只能是 Follower。
    (5)服务器 5 启动,同 4 一样当 Follower。

个人理解:也可以理解为myId 越大,权重越大,所以权重小的机器需要给权重大的机器投票,所以当达到半数时,这个时候,处于中位数的机器获得前面所有机器投上的一票以及自己投给自己的一票,顺理成章成为了Leader。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值