微服务核心知识之zookeeper选举机制及集群搭建

1、zk集群核心知识之三种角色及其作用
  • leader:作为整个zk集群写请求的唯一处理者,并负责进行投票的发起和决议,更新系统的状态。
  • follower:接收客户端请求,处理读请求,并向客户端返回结果;将写请求转给 Leader;在选举 Leader过程 中参与投票。
  • observer:可以理解为无选举投票权的 Flollower,其主要是为了协助 Follower 处理更多的读请求。如果 Zookeeper 集群的读请求负载很高,或者客户端非常非常多,多到跨机房,则可以设置一些 Observer 服务 器,以提高读取的吞吐量。
2、zk核心知识之注册中心常见的三种模式
  • zk的核心是广播机制,该机制保证了各个zk之间数据同步(数据一致性)。zk实现的机制为ZAB协议 。
  • 恢复模式: 如果leader崩溃,这个时候就会进入恢复模式,使整个zk集群恢复到正常的工作状态 。
  • 同步模式:新的leader选举出来后,就会进入同步模式(各个follower会去同步新的leader上的数据),当大多数zkServer完成了与leader的状态同步之后,恢复模式就结束。
  • 广播模式:客户端想写入数据,这个时候leader发起提议,当leader的提议被大多数的zkServer统一之后, leader就会去修改自身的数据,并将修改后的数据广播给其他的follower。
3、zk集群选举核心概念及选举时状态
  • myid 这是 zk 集群中服务器的唯一标识,称为 myid。例如,有三个 zk 服务器,那么编号分别是 1,2,3。
  • zxid zxid 为 Long 类型,其中高 32 位表示 epoch,低 32 位表示 xid。即 zxid 由两部分构成:epoch 与 xid。 每个 Leader 都会具有一个不同的 epoch 值,表示一个时期、时代。新的 Leader 产生,则会更新所有 zkServer 的 zxid 中的 epoch。 而 xid 则为 zk 的事务 id,每一个写操作都是一个事务,都会有一个 xid。每一个写操作都需要由 Leader 发起一个提议,由所有 Follower 表决是否同意本次写操作。
  • 逻辑时钟 Logicalclock,是一个整型数,该概念在选举时称为 logicalclock,而在 zxid 中则为 epoch 的值。 即 epoch 与 logicalclock 是同一个值,在不同情况下的不同名称。
  • zk的选举状态
    LOOKING,选举状态(查找 Leader 的状态)。
    LEADING,领导者状态。处于该状态的服务器称为 Leader。
    FOLLOWING,随从状态,同步 leader 状态。处于该状态的服务器称为 Follower。
    OBSERVING,观察状态,同步 leader 状态。处于该状态的服务器称为 Observer。
4、 zk集群选举发生的时机及选举算法
  • 发生时机:整个集群群龙无首的时候(1.服务启动 2.leader宕机之后)
  • 选举机制:集群中,半数zkServer同意,则产生新的leader(搭建集群时,一般都是奇数个) 三台服务器,多允许一台宕机,四台服务器,也是多允许一台宕机
  • 选举算法: 对比(myid,zxid),先对比zxid,zxid大者(大表示数据越新)胜出,成为leader,如果zxid一致,则myid 大者成为leader
5、实战–zk集群搭建
  • 端口的作用: 2181 对client端提供服务 2888 集群内及其通讯使用的端口 3888 集群选举leader
  • 修改zk配置
    • 编辑zk的conf目录下的zoo.cfg
      dataDir=/usr/local/zookeeper-3.4.12/data
      server.1=xdclass1:2888:3888
      server.2=xdclass2:2888:3888
      server.3=xdclass3:2888:3888
    • 在zk的根目录下,新建一个data目录,并在data目录下新增一个myid的文件
    • 将修改好配置的zk,分别放到三台服务器的/usr/local/,并将目录权限改为zookeeper用户
    • 三台服务器,分别新增一个叫做zookeeper的用户 useradd zookeeper
    • 三台服务器,均修改/usr/local/zookeeper-3.4.12/data/目录里的myid文件,文件内容是一个数字,对应 server.1=xdclass1 里的1
    • 三台服务器的zk的权限,都赋给zookeeper用户
      chown -R zookeeper:zookeeper zookeeper-3.4.12/
    • 关闭防火墙
      systemctl stop firewalld.service
    • 进入zk的bin目录
      rm -rf *.cmd
      chmod +x *.sh
    • 从第一台机子依次启动 ./zkServer.sh start
    • 三台机子均启动完成之后,可以使用 zkServer.sh status去查看状态

【搭建参考文章】https://blog.csdn.net/w1764033735/article/details/78956314

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值