利用Zookeeper实现集群选举

 什么是Zookeeper

分布式开源协调系统,数据模型简单,可以实现同步,配置管理,分组管理,分命名空间管理等。

技术本质

一个原子消息传递系统,它使所有服务器保持同步

FLP(3个科学家名字命名) 理论角度,Zookeeper是 SF的 ,使用超时机制来保证Livessnes

扩展FLP:

基于消息的异步通信系统,即使只有一个进程失败,也没有一个确定性算法,保证存活节点达到一致

确定性算法: 给定一个输入,一定会产生相同的输出

基于消息的异步通信系统 : 没有统一时钟,不能时间同步,不能使用超时,不能探测失败,消息可以任意延迟,消息可以乱序

扩展FLP不可能三角

Safety 系统中非故障节点达成了一致和合法的共识

Liveness 系统中非故障节点在有效时间能够达成共识

Fault Tolerance 协议必须在节点故障的时候同样有效

CAP理论角度 zookeeper 是CP的:

当leader节点down,剩余节点则会发起选举,选举期间导致短暂不可用。保证了强一致性而无法保证高可用性

数据模型

Watches监控节点变化

Data Access,Znode数据原子读写

Ephemeral Nodes临时节点,生命周期,与创建节点的进程一样

Sequence Nodes 创建的节点有序

client开发步骤

设计 path

选择znode类型

设计znode存储的内容

设计Watch  client 关注什么事件,事件发生后如何处理

集群选举算法 - 最小节点获胜

算法说明

当 Leader 节点挂掉的时候,持有最小编号 znode 的集群节点成为新的 Leader

设计path

集群公用父节点,例如:/examples/leader

设计Znode类型

所有服务,需要在父节点下创建znode, 由于持有最小编号 znode是leader,选择用ephemeral_sequential 类型 znode

设计Znode存储的内容

一般服务部署在多台机子上,这里我们可以按需定制,一般会存储ip

设计Watch

节点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值