拿到这本书时,花了一周时间看完,当时项目里有用到zk,就迫不及待的从jd下单。虽然目前工作中几乎用不到,但是对未知技术的好奇,迫使我没敲过代码一口气看完了。
这本书写的非常的好,从原理到代码级的剖析,看后大为赞叹,推荐大家看一看。
分布式一致性,zk是如何做到的?我简单总结下 (zk的各部件就是为了实现ZAB协议而存在的):
ZAB协议:三种服务器角色:leader,follower,observer。leader服务器通过过半的选票选出,将负责事务的调度和处理并保证事务处理的顺序,而follower则向leader转发事务请求,leader收到请求后,将事务请求分发给所有的follower,等待过半数follower正确反馈后,leader再次向follower分发commit消息。
ZAB协议不同于2PC协议,在于对follower服务器可能中断的处理,如果follower 有未提交的事务请求而中断了呢?ZAB只要过半数的服务器同意就可以了,而且采用崩溃恢复的方式来解决可能由于中断带来的不致性。
崩溃恢复:在启动或leader发生中断时就会启动崩溃恢复,也就是重新选举leader,而且系统会保证事务的顺序性不被破坏。zk采用了ZXID(事务递增id)算法来处理,由于每次leader的当选服务器都是ZXID最高者,所以可以保证事务的顺序。
ZXID设计思路:64位,低32位(leader服务器对其加1),高32位做为leader周期编号。
数据同步:对于后加入的服务器自动成为follower,然后开始从leader同步数据,当两者一致时,leader就会把该服务器加入当前可用follower列表中。
leader选举算法:投票信息(myid,zxid),服务器之间两两建立连接,进行投票,zxid(一般是数据最新的)大者为leader服务器,如果相同者比较myid,myid大者为leader服务器(还很有意思的投票过程,读者可以自行去看)。而且,有专门的线程负责选举过程的通信,也有专门的消息队列来处理接收和发送投票信息,并且有专门的TCP连接算法:只允许myid大的主动连接来避免重复连接。
Version保证了分布式数据原子性操作:每次数据改动都会进行version加1 ,并且在改动之前进行version比较。
Watcher(数据变更的通知):客户端向服务器注册,如果有数据更新就会触发,服务器会查看Watcher列表,并进行简单的通知(不做其他内容,只是简单的通知你,有东西变啦),客户端watcherManager收到后进行回调处理,如果需要数据,则再次向服务器进行获取。
Session(会话管理):有意思的sessionID生成算法(可以自行去看,不展开了)简单讲:高8位确定所在机器Id,后56位当前时间。采用分桶策略进行管理会话,服务器会定时的发心跳,对每隔一段时间没有回应,将会把这个会话移到旧的桶中,然后只要定时去检查相应的桶就可以了,这样高效的进行过时会话删除。
ACL:通常使用“username:password”
数据模型:Znode,树型。
服务器,客户端之间的通信:NIO和netty还可以自定义。不得不说netty很重要,dubbo中也用到了,基本上两个设备间的通信都会采用netty。
序列化协议:Jute
通信协议:定义了自己的通信协议(len+请求头+请求体)
不得不说ZooKeeper很重要,非常多的分布式框架都用到了。

ZooKeeper 倪超著 观后感相关推荐

  1. [201502][从 Paxos 到 ZooKeeper][分布式一致性原理与实践][倪超][著]

    [201502][从 Paxos 到 ZooKeeper][分布式一致性原理与实践][倪超][著] http://zookeeper.apache.org 第 1 章 分布式架构 1.1 从集中式到分 ...

  2. 阿里专家倪超:支撑海量用户的阿里中间件技术

    大流量高并发互联网应用实践在线峰会官网:https://yq.aliyun.com/activity/112 峰会统一报名链接:http://yq.aliyun.com/webinar/join/49 ...

  3. 青年PM倪超:想让程序员多一点点幸福感

    摘要: 本文主人公倪超,在内部,同事都习惯叫他花名银时,是阿里云产品经理.前不久,他所负责的企业级分布式应用服务EDAS,荣获了公司2018财年年度最佳产品奖.在五四青年节来临之际,我们有幸近距离的探 ...

  4. 青年PM倪超:想让程序员多一点点幸福感 1

    摘要: 本文主人公倪超,在内部,同事都习惯叫他花名银时,是阿里云产品经理.前不久,他所负责的企业级分布式应用服务EDAS,荣获了公司2018财年年度最佳产品奖.在五四青年节来临之际,我们有幸近距离的探 ...

  5. 青年PM 倪超:想让程序员多一点点幸福感

    云栖君导读: 本文主人公倪超,在内部,同事都习惯叫他花名银时,是阿里云产品经理.前不久,他所负责的企业级分布式应用服务EDAS,荣获了公司2018财年年度最佳产品奖.在五四青年节来临之际,我们有幸近距 ...

  6. 人人都来玩12306_金山网络倪超

    2019独角兽企业重金招聘Python工程师标准>>> 人人都来玩12306_金山网络倪超 其实玩12306什么的最有意思了,而且他们很有耐心,不用担心被玩坏什么的.玩的时候还能玩出 ...

  7. 2013HTML5峰会-倪超-订票助手一日谈

    2019独角兽企业重金招聘Python工程师标准>>> 2013HTML5峰会-倪超-订票助手一日谈 早期的订票助手定位于在系统繁忙的时候利用系统自身的功能帮助用户自动重新操作,后期 ...

  8. python并发编程书籍推荐_《吐血整理》-顶级程序员书单集

    <程序人生>十年风雨技术人的书单整理 前言 王潇:格局决定了一个人的梦想,梦想反过来决定行为. 那格局是什么呢? 格局是你能够看见的深度.广度和密度. 王潇认为,格局是一本本书搭建起来的, ...

  9. python视频教程唐学韬-顶级程序员的书单集

    你知道的越多,你不知道的越多 点赞再看,养成习惯 给岁月以文明,而不是给文明以岁月 前言 我们的一生其实也基本上都在学习,那提到学习,我第一时间想到的就是读书了. 记得帅丙在自己21岁的那个夏天,当时 ...

最新文章

  1. java python算法_用Python,Java和C ++示例解释的排序算法
  2. TortoiseSVN与VisualSVN Server搭建SVN版本控制系统
  3. 作业 3 利用分支和循环结构解决问题
  4. 新时代,大数据战略和DevOps更配
  5. 北京林业大学计算机科学与技术考研科目,北京林业大学计算机科学与技术考研经验-北林信息学院考研辅导班...
  6. 我本人一直以来犯的错误,在看了 Think In Java 后才抓了出来
  7. axure中备注线_Axure教程资料
  8. sinx/x的极限为什么是1_某个波长的激光最小的聚焦光斑可以到多少?怎么让聚焦光斑更细?为什么聚焦系统要用扩束镜?...
  9. 测试驱动开发全功略(转)
  10. vscode生成vue模板快捷键_VSCode 初次写vue项目并一键生成.vue模版
  11. 苹果手机左上角的数字怎么弄_一键更改手机IP操作方法
  12. dellg3计算机rom,戴尔G3 U盘装系统win7教程
  13. 纯CSS 毛玻璃效果
  14. 【计算方法笔记】四阶Runge-Kutta法
  15. keystore导出p12,cer,crt,.key.pem证书文件格式
  16. 关于电话号码欺骗的一切
  17. 3分钟详解服务器入网带宽出网带宽和入流量出流量
  18. 量子十问之三:量子技术能将人“瞬间”转移到别的星球上吗?
  19. Lyra——开启下一个十亿用户的语音通话
  20. 如何退出Google的Gmail信箱

热门文章

  1. 自定义View(英雄联盟七星图)之准备工作
  2. 数字故障录波器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. hashmap的理解
  4. MDK 开发环境与 Proteus 仿真软件(8个led循环点亮)
  5. ngnix、lighttpd、apache三大主流web服务器的区别
  6. wave2lip训练
  7. 3. 第三讲 malloc/free
  8. 题解 guP3956 【棋盘】
  9. Elementor教程:WordPress零基础建站(非常详细图文教程)
  10. Etnetera Brevity Challenge