保健励志美文体育育儿作文
投稿投诉
作文动态
热点娱乐
育儿情感
教程科技
体育养生
教案探索
美文旅游
财经日志
励志范文
论文时尚
保健游戏
护肤业界

深入浅出Zookeeper中的ZAB协议

  本文主要内容如下:
  ZAB协议的全称是ZookeeperAtomicBroadcase,原子广播协议。
  作用:通过这个ZAB协议可以进行集群间主备节点的数据同步,保证数据的一致性。
  在讲解ZAB协议之前,我们必须要了解Zookeeper的各节点的角色。Zookeeper各节点的角色Leader负责处理客户端发送的读、写事务请求。这里的事务请求可以理解这个请求具有事务的ACID特性。同步写事务请求给其他节点,且需要保证事务的顺序性。状态为LEADING。Follower负责处理客户端发送的读请求转发写事务请求给Leader。参与Leader的选举。状态为FOLLOWING。Observer
  和Follower一样,唯一不同的是,不参与Leader的选举,且状态为OBSERING。
  可以用来线性扩展读的QPS。启动阶段,如何选Leader?
  Zookeeper刚启动的时候,多个节点需要找出一个Leader。怎么找呢,就是用投票。
  比如集群中有两个节点,A和B,原理图如下所示:
  节点A先投票给自己,投票信息包含节点id(SID)和一个ZXID,如(1,0)。SID是配置好的,且唯一,ZXID是唯一的递增编号。节点B先投票给自己,投票信息为(2,0)。然后节点A和B将自己的投票信息投票给集群中所有节点。节点A收到节点B的投票信息后,检查下节点B的状态是否是本轮投票,以及是否是正在选举(LOOKING)的状态。投票PK:节点A会将自己的投票和别人的投票进行PK,如果别的节点发过来的ZXID较大,则把自己的投票信息更新为别的节点发过来的投票信息,如果ZXID相等,则比较SID。这里节点A和节点B的ZXID相同,SID的话,节点B要大些,所以节点A更新投票信息为(2,0),然后将投票信息再次发送出去。而节点B不需要更新投票信息,但是下一轮还需要再次将投票发出去。
  这个时候节点A的投票信息为(2,0),如下图所示:
  统计投票:每一轮投票,都会统计每台节点收到的投票信息,判断是否有过半的节点收到了相同的投票信息。节点A和节点B收到的投票信息都为(2,0),且数量来说,大于一半节点的数量,所以将节点B选出来作为Leader。更新节点状态:节点A作为Follower,更新状态为FOLLOWING,节点B作为Leader,更新状态为LEADING。运行期间,Leader宕机了怎么办?
  在Zookeeper运行期间,Leader会一直保持为LEADING状态,直到Leader宕机了,这个时候就要重新选Leader,而选举过程和启动阶段的选举过程基本一致。
  需要注意的点:剩下的Follower进行选举,Observer不参与选举。投票信息中的zxid用的是本地磁盘日志文件中的。如果这个节点上的zxid较大,就会被当选为Leader。如果Follower的zxid都相同,则Follower的节点id较大的会被选为Leader。节点之间如何同步数据的?
  不同的客户端可以分别连接到主节点或备用节点。
  而客户端发送读写请求时是不知道自己连的是Leader还是Follower,如果客户端连的是主节点,发送了写请求,那么Leader执行2PC(两阶段提交协议)同步给其他Follower和Observer就可以了。但是如果客户端连的是Follower,发送了写请求,那么Follower会将写请求转发给Leader,然后Leader再进行2PC同步数据给Follower。
  两阶段提交协议:第一阶段:Leader先发送proposal给Follower,Follower发送ack响应给Leader。如果收到的ack过半,则进入下一阶段。第二阶段:Leader从磁盘日志文件中加载数据到内存中,Leader发送commit消息给Follower,Follower加载数据到内存中。
  我们来看下Leader同步数据的流程:
  客户端发送写事务请求。Leader收到写请求后,转化为一个proposal01:zxid1事务请求,存到磁盘日志文件。发送proposal给其他Follower。Follower收到proposal后,Follower写磁盘日志文件。
  接着我们看下Follower收到Leader发送的proposal事务请求后,怎么处理的:
  Follower返回ack给Leader。Leader收到超过一半的ack,进行下一阶段Leader将磁盘中的日志文件的proposal加载到znode内存数据结构中。Leader发送commit消息给所有Follower和Observer。Follower收到commit消息后,将磁盘中数据加载到znode内存数据结构中。
  现在Leader和Follower的数据都是在内存数据中的,且是一致的,客户端从Leader和Follower读到的数据都是一致的。ZAB的顺序一致性怎么做到的?
  Leader发送proposal时,其实会为每个Follower创建一个队列,都往各自的队列中发送proposal。
  如下图所示是Zookeeper的消息广播流程:
  客户端发送了三条写事务请求,对应的proposal为proposal01:zxid1proposal02:zxid2proposal03:zxid3
  Leader收到请求后,依次放到队列中,然后Follower依次从队列中获取请求,这样就保证了数据的顺序性。Zookeeper到底是不是强一致性?
  官方定义:顺序一致性。
  不保证强一致性,为什么呢?
  因为Leader再发送commit消息给所有Follower和Observer后,它们并不是同时完成commit的。
  比如因为网络原因,不同节点收到的commit较晚,那么提交的时间也较晚,就会出现多个节点的数据不一致,但是经过短暂的时间后,所有节点都commit后,数据就保持同步了。
  另外Zookeeper支持强一致性,就是手动调用sync方法来保证所有节点都commit才算成功。
  这里有个问题:如果某个节点commit失败,那么Leader会进行重试吗?如何保证数据的一致性?欢迎讨论。Leader宕机数据丢失问题
  第一种情况:假设Leader已经将消息写入了本地磁盘,但是还没有发送proposal给Follower,这个时候Leader宕机了。
  那就需要选新的Leader,新Leader发送proposal的时候,包含的zxid自增规律会发生一次变化:zxid的高32位自增1一次,高32位代表Leader的版本号。zxid的低32位自增1,后续还是继续保持自增长。
  当老Leader恢复后,会转成Follower,Leader发送最新的proposal给它时,发现本地磁盘的proposal的zxid的高32位小于新Leader发送的proposal,就丢弃自己的proposal。
  第二种情况:如果Leader成功发送了commit消息给Follower,但是所有或者部分Follower还没来得及commit这个proposal,也就是加载磁盘中的proposal到内存中,这个时候Leader宕机了。
  那么就需要选出磁盘日志中zxid最大的Follower,如果zxid相同,则比较节点id,节点id大的作为Leader。
  原文链接:https:mp。weixin。qq。comsPtbenxM1vzUdtPLLsA9J7w

心灵的归宿合上书本,指尖似乎还有它残留的温热,心随着它思绪飞扬hellip;hellip;嘴里有一颗糖在慢慢融化,甜蜜萦绕我心,我回想起了我的糖果时代。小时的我,享受于书那如……从古至今关于读书的名人名言精选导语:一个爱书的人,他必定不致于缺少一个忠实的朋友,一个良好的老师,一个可爱的伴侣,一个温情的安慰者。以下是小编为大家精心整理的从古至今关于读书的名人名言精选,欢迎大家阅读参考……关于健身的作文学会运动我们小区的广场上有许多健身器材,因为运动是最重要的,可以保持健康,提高人的免疫功能。晚上有十多个老人和年青人在这里锻炼,中午他们又出来到这里的亭子里边乘凉,早上便出来说闲……旧金山的后花园索萨利托(Sausalito),西班牙语小柳林的意思,是坐落在加州旧金山金门大桥北端的一个海滨小镇。它发展于二次世界大战期间,曾是主要的造船中心,留下大量的船屋是这里的一……故宫宫女魅影是真的吗?走进600岁的紫禁城看照片听奇闻怪谈流传在民间,关于故宫的传说,我想很多人或多或少都有所耳闻,但是这些故事的真与伪,却很少有人说得明白。今天各位看官跟随我的镜头,一同走进这座神秘的故宫,和您聊聊那些荒诞中,又带着……如何看待iPhone14有望实现息屏显示?有哪些信息值得关注如果在iPhone14上面实现息屏显示,这对于iPhone的又无非是一个大创新但反观一众安卓的友商,可以说,已经在息屏显示上玩出了许多花样比如华为那时mate40(……关于水果的说明文范文篇一:关于水果的说明文这是我为您准备的答案,希望您满意。苹果简介:苹果,又叫滔婆,仁果类,由结实、多汁的果肉包着有几个种子的果核,与梨同属。商品型苹果原产于西亚或东欧,在……欢乐谷我们今天来到了成都欢乐谷主题公园。成都欢乐谷主题公园,是成都市文化产业重点项目和旅游产业重点项目。位于成都市金牛区北三环一段与交大路交界处,公园一期项目占地47万平方米。……我心向党,系与祖国品学网专稿未经允许不得转载新中国成立后,中国共产党带领中国人民开展了建设社会主义的伟大成就和艰辛探索,取得了巨大的成就,也经历了曲折。开革开放后党带领人民继续深造,……关于汉字的对联关于汉字的对联上联:两舟竞渡,橹速(鲁肃)不如帆快(攀哙);下联:百管争鸣,笛清(狄青)难比萧和(萧何)。上联:莲(怜)子心中苦;下联:梨(离)儿腹内酸……真正的自己高中作文真正的自己我们每个人在这个世界上都有自己的人设,有的人是温柔贤淑,有的是开朗大方,有的是内向文雅,有的人是阳光帅气那么,我的角色又是什么呢?神经大条?细心安静?待人……欢声笑语初三作文秋风又起了,低空流淌着灰色的云,秋雨连绵,可怜的秋叶,怎经得起秋雨的侵袭?终于,敌去了枯枝,飞旋地飘落了。金秋十月的一天,在老师们的带领下,我终于和同学们来到了第一个目的……
力克世界亚军,前曼联临时主帅暗讽老东家文羊城晚报全媒体记者刘毅不是朗尼克没水平,而是曼联太难带。今晨在欧洲国家联赛A1组首轮比赛中,奥地利新主帅朗尼克取得开门红,带队在客场以3比0大胜2018世界杯亚军克罗地……中国女排31战胜意大利,蔡斌强势指挥使国家队回归强队本色随着中国女排分别战胜荷兰,土耳其赢得两连胜,主教练菜包子带领女排姑娘们渐入佳境。中国女排以3:1战胜意大利女排,四局比分分别是25:16,20:25,25:22,25:1……11,又平了!FIFA第7创12年耻辱纪录,60控球仅11射欧国联赛作为2022年卡塔尔世界杯赛前的一项重要热身赛事,各国投入的关注度在增大,在欧国联赛A2组的一场焦点战中,世界排名第7的前世界杯和欧洲杯双料冠军西班牙队坐镇主场迎战C罗……高一演讲稿勿忘国耻二今天我要跟大家已经的主题是:勿忘国耻1937年的12月13日,日本侵略者攻占南京市,对无辜居民和已放下武器的士兵进行了长达六星期的血腥大屠杀昔日繁华的六朝古都顿时变成了人……2015山东菏泽中考作文题目及范文2015山东菏泽中考作文:有一种声音在记忆深处有这样一种声音,它来自江河奔流的豪迈,它来自戈壁风响的震撼,它来自火山暴发的壮阔,但它更来自山水行吟的歌者,一句ldquo;……请珍惜生命初中作文你可曾想过,一生中最重要的为何?是钱财?是玩乐?这些都不是答案。人的一生中最重要、最值得我们好好去珍惜的是生命!天有不测风云,人有旦夕祸福。这句话深深的刻画在我的脑海中,……会操比赛经过体育老师魔鬼般的训练,终于迎来了展示成果的那一天。太阳也为我们把阴霾轰走。在主席台上,主持人宣告了规则和秩序。演奏起了国歌,那国歌气宇轩昂,听得我们振奋人心,一个个都……32!21岁女足小花沈梦雨爆发,完美停球突破射门,引全场沸腾我国的不少足球运动员都留过洋,在国外的联赛踢过球,比如曾在曼城效力的孙继海,在水晶宫队效力的范志毅,还有现在在西班牙人效力的武磊,女足方面,王霜效力过巴黎圣日耳曼,唐佳丽现在正……直击朝鲜新农村,如今是什么生活?网友没有对比,就没有伤害在去朝鲜的中国游客群体中,可以看到有相当数量的游客年龄都在65岁以上,这部分游客大多已经退休,有着可观的退休金,并且文化水平较高,他们经历了上山下乡,很多人虽然是城镇户籍,但曾……带着梦想飞翔海阔凭鱼跃,天高任鸟飞。每个人都拥有着一个属于自己的梦想。记得四岁的时候,我的萌发第一个梦想就是当一名超市的收银员,到了小学则希望拥有属于自己的一部自行车。到了初中,慢慢……老年人身上出现老人味是不干净?50岁后,尽量保持几个习惯人随着年龄的增长,身体机能会不断下降,年龄大了,更容易受到一些疾病的困扰,所以,人们也常说,人老了不好过。而很多老年人身上会有老人味,感觉到十分地苦恼,严重时,还可能会影响正常……85岁马玉琴直播间撒娇,被丈夫揽入怀,唱摇篮曲哄睡,网友丢人引子:85岁的马玉琴身体越来越差,李玉成还让她到直播间唱歌、跳舞,生怕她闲着在家没事做。现在已经是夏天,李玉成都穿上了短袖,马玉琴却还穿着长袖,脖子上围着围巾,一副虚弱的样子。……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网