Zookeeper大白话(●—●)

目录

🤗 谈谈对Zookeeper的理解

🧡节点类型

🧡选举机制

第一次启动

非第一次启动

🧡监听原理

🧡写数据原理

写入请求直接发送给Leader节点

写入请求直接发送给Follower节点


💟这里是CS大白话专场,让枯燥的学习变得有趣!

💟没有对象不要怕,我们new一个出来,每天对ta说不尽情话!

💟好记性不如烂键盘,自己总结不如收藏别人!

🤗 谈谈对Zookeeper的理解

💌Zookeeper是为分布式应用提供协调服务的Apache项目,是基于观察者模式设计的分布式服务管理框架。Zookeeper = 文件系统 + 通知机制。

观察者模式(Observer Pattern):定义对象之间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。又名发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属(Dependents)模式。

💌最核心的思想就是半数机制,即集群中半数以上的服务器正常,则集群可用。

🧡节点类型

🍠持久化目录节点:客户端和服务器断开连接后节点仍然存在。

🍠持久化顺序编号目录节点:对节点名称顺序编号,客户端和服务器断开连接后节点仍然存在。

🍠临时目录节点:客户端和服务器断开连接后节点被删除。

🍠临时顺序编号目录节点:对节点名称顺序编号,客户端和服务器断开连接后节点被删除。

🧡选举机制

第一次启动

 💌当票数没有达到半数时,将票投给当前myid大的服务器,直到达到半数后该服务器自动选举为Leader,剩下的服务器变为Follower。也就是如果有N台服务器,在顺序启动情况下Leader的myid为\left\lceil {\frac{​{\rm{N}}}{2}} \right\rceil,在随机启动情况下,投票过半时,Leader为myid大的服务器。

非第一次启动

💌若Leader挂掉了,根据以下三个值来选取,顺序判断谁大谁为Leader:

🍠Epoch:每个Leader任期代号,每投完一次票任期号增加。

🍠ZXID:事务id,用来标识一次服务器状态的变更。

🍠SID:服务器id,与myid一致。

🧡监听原理

 🍠在main线程中创建客户端,创建两个线程:connect负责网络连接,listener负责监听。

🍠通过connect将注册的监听事件发送给zk服务器。

🍠将注册的监听事件添加到zk服务器的监听器列表中。

🍠当zk服务器监听到变化,将消息发给listener。

🧡写数据原理

写入请求直接发送给Leader节点

💌由Leader发送写请求给Follower,Follower完成写数据后返回ask给Leader,若超过半数的服务端完成写数据,则Leader返回ask给客户端,剩下的服务器再慢慢完成写数据。

写入请求直接发送给Follower节点

💌先将写请权限转给Leader,流程同上,若超过半数的服务端完成写数据,返回ask给与客户端建立连接的Follower,再由其返回ask给客户端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值