有责任感的 zab

定义

Zookeeper Atomic Broadcast

Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性

原因

Multi-Paxos 虽然能就一系列值达成共识,但不关心共识后的值是什么,同时它也不关心指令的顺序性。

而 zab 协议借鉴了 paxos,但是它是特别为Zookeeper设计的支持崩溃恢复的原子广播协议

模型

zab 实现了一个主备的模型,只有一台 leader 负责处理外部的写事务请求,然后同步给其他 follower。

Zookeeper 客户端会随机的链接到 zookeeper 集群中的一个节点,如果是读请求,就直接从当前节点中读取数据;如果是写请求,那么节点就会向 Leader 提交事务,Leader 接收到事务提交,会广播该事务,只要超过半数节点写入成功,该事务就会被提交。

要点

消息广播

基本过程

  1. leader 收到消息
  2. leader 广播消息
  3. leader 收到大多数 follower 的确认
  4. leader 向所有 follower 广播 commit 消息,同时自身也会完成事务提交
  5. follower 收到 commit 并自己 commit

细节点

  • 每个事务都有一个全局递增的唯一 ID,ZXID,zab需要保证执行顺序,每个事务必须按 ZXID 排序后处理
  • leader 和 每一个 follower 之间都有一个 FIFO queue,除了解耦之外,同时也一定程度的保证了事务的执行顺序

崩溃恢复

原则

  • ZAB 协议确保那些已经在 Leader 提交的事务最终会被所有服务器提交
  • ZAB 协议确保丢弃那些只在 Leader 提出/复制,但没有提交的事务。

实现方式

  1. 崩溃后进行选举
  2. 根据 ZXID 选举 leader,ZXID 最大,同时新选举出来的 Leader 不能包含未提交的 Proposal
  3. 选举成功开始同步数据
  4. leader 确认事务是否已经被过半的 follower 提交,进行数据同步,保证数据一致
  5. 等到 Follower 将所有尚未同步的事务 Proposal 都从 Leader 服务器上同步过来并且应用到内存数据中以后,Leader 才会把该 Follower 加入到真正可用的 Follower 列表中
  6. 进入消息广播模式

ZXID

一共 64 位,高 32 位代表了每代 Leader 的唯一性,低 32 代表了每代 Leader 中事务的唯一性。

总结

  • 为什么说 zab 有责任感呢?因为他和别人不要的地方再,如果有消息被提交了,那么就不会忘记了。

  • 为了实现这个目标,它做了什么保证措施呢?

  1. 选举的时候保证,保证了 ZXID 最大(其实这个和 raft 类似,就是指向了日志最多的人)
  2. 利用队列保证,消息来的时候都通过了队列,所以一定程度也保证了先来先处理
  • 消息广播就是一个 2PC 只不过奔溃恢复解决了 2PC 的单点问题
  • 本质还是一个主备,压力还是在主节点上哦
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353