Zookeeper篇---第四篇

本文深入探讨Zookeeper的集群通信机制,解释Leader与Follower如何通过LearnerHandler进行交互。接着,详细介绍了Zookeeper实现分布式锁的原理,强调临时有序节点在避免死锁和锁等待中的作用。最后,解析了Zookeeper的系统架构,包括服务器端与客户端的连接、会话管理、集群复制以及Zab协议确保的数据一致性。

系列文章目录



一、ZooKeeper 集群中个服务器之间是怎样通信的?

Leader 服务器会和每一个 Follower/Observer 服务器都建立 TCP 连接,同时为每个
Follower/Observer 都创建一个叫做 LearnerHandler 的实体。
LearnerHandler 主要负责 Leader 和 Follower/Observer 之间的网络通讯,包括数据同步,
请求转发和 proposal 提议的投票等。
Leader 服务器保存了所有 Follower/Observer 的 LearnerHandler 。

二、ZooKeeper 分布式锁怎么实现的?

如果有客户端1、客户端2等N个客户端争抢一个 Zookeeper 分布式锁。大致如下:

  1. 大家都是上来直接创建一个锁节点下的一个接一个的临时有序节点
  2. 如果自己不是第一个节点,就对自己上一个节点加监听器
  3. 只要上一个节点释放锁,自己就排到前面去了,相当于是一个排队机制。
    而且用临时顺序节点的另外一个用意就是,如果某个客户端创建临时顺序节点之后,不小心自己宕
    机了也没关系, Zookeeper 感知到那个客户端宕机,会自动删除对应的临时顺序节点,相当于自动
    释放锁,或者是自动取消自己的排队。
    本地锁,可以用 JDK 实现,但是分布式锁就必须要用到分布式的组件。比如 ZooKeeper、Red
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java毕设王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值