如何基于ZK实现高可用架构

zookeeper设计步骤

  设计path   节点的路径

  选择znode类型  普通节点、临时节点等

  设计znode数据  节点中的数据

  设计watch  节点的监听事件以及对应的处理

 

ZK实现主备切换架构

  1、设计2个临时节点 master slave

  2、master节点挂掉时 slave升级master

  3、由于切换时可能会数据冲突,master节点需要记录时间

  4、节点启动时尝试创建master节点,如果失败则创建slave节点。 当slave节点收到master丢失的事件时,尝试创建master节点,如果成功删除slave节点。

 

ZK实现集群选举

  1、最小节点数获胜

    共用parent node,集群中每个节点在parent node下创建节点

    当leader节点挂掉时,编号最小的znode成为leader,因此使用临时有序节点

    根据业务写入节点

    启动后在parent节点下创建有序的临时节点;编号最小的znode成为leader; 当parent下节点删除时判断是否为leader

 

  2、抢建唯一节点

    所有节点只有一个leader 节点,本质上是一个分布式锁。

    当leader挂掉时,所有节点抢注leader节点,谁抢到是谁的。所以用临时节点。

    根据业务写入数据

    启动后所有节点抢注leader,监控到leader删除后所有节点抢注leader

  3、法官判决

    共用父节点

    编号最小的成为法官,因此使用有序临时节点

    根据业务需要写入数据,比如事务的ID

    编号最小的节点成为法官,法官负责选举规则,监听到节点删除时所有节点更新选举数据,法官读取所有节点数据根据算法选出leader并写入父节点,所有节点监听父节点确认自己是不是leader

 

 

 

 

    

    

    

 

posted on 2022-12-09 19:00  李某人的窥视  阅读(172)  评论(0编辑  收藏  举报

导航