0
点赞
收藏
分享

微信扫一扫

Zookeeper理论知识

上善若水的道 2022-04-02 阅读 96

文章目录

基本架构

数据结构

应用场景

统一·配置服务

统一集群管理

服务器结点动态上下线

软负载均衡

选举机制

myid

SID

ZXID

Epoch

Zookeeper选举机制-第一次启动

Zookeeper选举机制-非第一次启动

结点类型

监听器原理

Paxos算法

Prepare阶段

Accept接受阶段

Learn阶段

zk如何保证数据一致性

集群结点信息
存储了集群结点信息,如hbase的regionserver结点存储在zk中的/hbase/meta-regionserver中,如果将其删除,则hbase-master就不知道自己有哪些regionserver在线。
https://www.cnblogs.com/tkzL/p/12916116.html
保证数据一致性的核心协议是ZAB(ZooKeeper Atomic Broadcast)协议
写请求发送到follower,follower发送请求到leader,leader发起Proposal,广播给所有follower,半数follower同意后,再提交写请求,follower执行成功并返回给客户端。

分布式独享锁

https://blog.csdn.net/qq_40378034/article/details/117014648
分布式独享锁的核心是如何保证当前有且仅有一个事务获取锁,并且锁被释放后,所有正在等待获取锁的事务都能够被通知到。
通过在ZooKeeper上创建一个子节点来表示一个锁,在需要获取排他锁时,所有的客户端都会试图通过调用create()接口,在/exclusive_lock节点下创建临时子节点/exclusive_lock/lock。
然后查看自己是不是当前节点下最小的点,如果不是,说明没有强到锁。所有没有获取到锁的客户端就需要到/exclusive_lock节点上注册一个子节点变更的watcher监听,以便实时监听到lock节点的变更情况。当业务完成后,delete结点释放锁,然后再判定最小的结点获得锁。

分布式队列

使用路径为/queue的znode下的节点表示队列中的元素。/queue下的节点都是顺序持久化znode。
offer方法在/queue下面创建一个顺序znode。
remove方法移除一个元素

相关链接

举报

相关推荐

0 条评论