Zookeeper的工作原理是什么样?
1. Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做 Zab 协议。Zab协议有两种模式,它们分别是恢复模式和广播模式。
2. 当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数 server的完成了和leader的状态同步以后,恢复模式就结束了。
3. 状态同步保证了leader和server具有相同的系统状态
4. 一旦leader已经和多数的follower进行了状态同步后,他就可以开始广播消息了,即进入广播状态。这时候当一个server加入zookeeper服务中,它会在恢复模式下启动,发现leader,并和leader进行状态同步。待到同步结束,它也参与消息广播。Zookeeper服务一直维持在Broadcast状态,直到leader崩溃了或者leader失去了大部分的followers支持。
5. 广播模式需要保证proposal被按顺序处理,因此zk采用了递增的事务id号(zxid)来保证。所有的提议(proposal)都在被提出的时候加上了 zxid。
6. 实现中zxid是一个64为的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch。低32位是个递增计数。
7. 当leader崩溃或者leader失去大多数的follower,这时候zk进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的server都恢复到一个正确的状态。
猜你喜欢LIKE
相关推荐HOT
更多>>什么是XSS攻击,如何避免?
所以XSS攻击的核心就是浏览器渲染DOM的时候将文本信息解析成JS脚本从而引发JS脚本注入,那么XSS攻击的防御手段就是基于浏览器渲染这一步去做防...详情>>
2022-11-17 11:36:00java入门基础知识
新手学习java会有一定的难度,初期阶段可能会不知道如何规划学习路线,建议大家可以上网直接寻找一些成熟的java学习大纲,比如一些java培训机...详情>>
2022-10-19 14:04:00怎么保证缓存和数据库数据的一致性?
选择先淘汰缓存,再更新数据库,假如先更新数据库再淘汰缓存,如果淘汰缓存失败,那么后面的请求都会得到脏数据,直至缓存过期。假如先淘汰缓存...详情>>
2022-10-10 09:51:00请解释自动装配模式的区别?
有五种自动装配的方式,可以用来指导 Spring 容器用自动装配方式来进行依赖注入。 1. no 默认的方式是不进行自动装配,通过显式设置ref属性来...详情>>
2022-10-10 09:50:00如何搭建一个高可用的系统?
高可用系统,就是说要保证系统在几乎任务时候都要有正常运行,功能正常。 我们来看下哪些情况会造成系统不可用。- 单机系统下的可用性问题,从n...详情>>
2022-10-10 09:50:00Java培训问答更多>>
新Java行业疑惑解答:Java的内存管理是如何工作的?
新java script是什么?为什么要学java script
新java和大数据哪个好?未来哪个职业发展更好
新java培训班多久能学会?培训周期大概多久
新java script和java的区别有哪些?如何区分
新java script的数据类型主要有哪些?怎样学的更快
新c语言与java区别在哪里?去培训机构学哪个比较好
Java面试题库 更多>>
华为外包java面试题-Java实现单链表的逆序
Java程序员面试题
Java面试题及答案
什么是线程的上下文切换?
如何撤销已经推送(push)到远端仓库的提交(commit)信息?
你了解哪些加密算法?
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 南昌校区
- 哈尔滨校区