幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

一文读懂raft一致性协议算法并理解其中的关键设计

  什么是一致性算法
  为了避免单个机器可能出现的数据丢失、单点故障等问题,人们想出了通过复制数据到多个机器上的方式来解决。但是有多个机器时,带来的另一个问题就是如何保证这些机器之间的数据是一致的呢?不能因为某个机器故障或错误,导致各个机器之前数据混乱或丢失。这就是分布式一致性算法要解决的问题。
  业界比较有名的分布式算法是paxos,不过可惜的是它比较晦涩难懂,难懂的代价就是很少有人能掌握它然后基于它做出可靠的实现。不过幸好raft及时出现,raft的特点是易于理解,并且已经有非常多的实际系统是基于raft算法实现的了,比如tikv、etcd等。文章末尾我们还会解释一下raft的名字。介绍raft
  raft的易懂性的一个重要方式就是对问题进行拆分,让大家能够独立理解每个子问题。raft的分布式一致性问题可以拆分成哪些子问题呢?
  可以分为leader选举log复制安全性保证logcompaction、membershipchange等优化leader选举
  raft把分布式系统抽象成了分布式的状态机,每个状态机有一个log队列,log队列中存放的是状态机的指令,只要保证各个节点的log队列的数据顺序和值一致,就能保证状态机最终的状态是一致的。
  在raft,节点一共有3中角色,leader、follower、candidate。在raft系统中,同一时间只会有一个leader,leader负责处理客户端的请求,并且同步log给follower,leader定期通过给follower发送心跳,保持自己的leader地位。
  初始时所有的节点都处于follower状态,当follower一段时间(electiontimeout)内没有接收到leader的请求时(log复制或心跳),就会把自己转变为candidate角色,candidate是成为leader前的准备状态,candidate会向其他节点发送RequestVote请求,请求其他节点为自己投票,如果某个candidate获得了半数以上(包括自己)的节点的投票支持后,就可以成为这一届的leader。这里为了防止节点可能同时唤醒成为candidate,会增加一个随机机制,让超时时间随机,减少冲突概率,即使出现了冲突(多个candiate且都获得相同的投票),会在一段时间后进行下一轮投票。每一轮的选举会有一个term(任期)的值,term会从1开始递增,每一个follower在一个任期内只会投票给一个节点,这样加上半数以上机制就能保证同一个term内最多只会出现一个leader。log复制(logreplication)
  成为leader之后,就可以接收客户端的请求,leader接收客户端请求后,会写入本地log,并同步给所有的follower(通过AppendEntries的RPC请求),follower会写入本地log,返回给leader成功,leader接收到半数以上(包括自己)的写入成功后,会进行commit,commit后这个修改就会应用到状态机中,并且返回给客户端请求成功。AppendEntries请求中会包含当前leader的term和日志的index。每次AppendEntries请求中会带上leader的commitIndex,这样follower就知道哪些log可以被应用到状态机上了。raft的安全性关键设计leader故障重新选举
  如果某个时刻leader故障了,而leader刚刚同步的log并没有同步给全部follower,则这时一个没有完成同步的follower如果成为下一个leader,则会导致前一任leader已经commit的数据丢失,这是不能接受的。
  在raft中是如何解决这个问题的呢?raft中巧妙的实现了必须拥有已经commit的log的节点才能成为下一个leader,当follower收到一个candidate的RequestVote时,RequestVote中包含term、lastLogTerm、lastLogIndex,term是这个candiate的发起新的leader选举的term,lastLogTerm是candidate上最后一个log的term,lastLogIndex是最后一个log的index,term和index能够共同定位出唯一一个log。如果candidate的lastLogTerm小于当前follower的最后一个log的term,则会拒绝这个RequestVote请求。如果candidate的lastLogIndex小于当前follower的最后一个log的index,则会拒绝这个RequsetVote的请求。
  通过这个限制,就能够保证选举出的新leader,是不会丢掉已经commit的数据的。并且当leader给follower同步数据(AppendEntries请求)时,会带上上一个log的term和index,如果follower的上一个log的term和index不相同,follower会返回错误,leader会进行回溯,这样就可以将follower的数据和leader进行校准。raft优化logcompaction
  系统持续运行log可能会持续增加,持续增加的log带来的问题有,1是占用过多的磁盘空间,2是如果有新节点加入,则需要同步的数据会非常多。因此raft中提出了logcompaction的机制,就是做快照,这个与mysql中的redolog类似。程序在特定时间(比如定时或log到达一定长度)后会对状态机保存快照,这样这个状态机之前的log就可以丢弃了,只需要持久化、传输这个快照就可以了。一般快照都比log会小很多。raft优化membershipchange
  服务在运行过程中,可能出现要添加修改删除节点的情况,比如某个机器坏了,我们就需要给集群换一个机器,再比如我们想提高集群的故障容忍度,可能就需要添加节点。
  raft中提出的修改membership的方法为joint(联合)consensus
  我们把raft集群节点的列表称为配置,当要进行节点修改时,就是从一个旧的配置(Cold)修改到新的配置(Cnew),当leader收到要进行集群配置修改的请求后,会创建一个Coldnew的配置(旧集群和新集群合并),作为raftlog发送给follower,当follower收到Coldnew后,会立刻使用Cnew配置。一旦Coldnew被commit后,Cold和Cnew必须联合起来做决定(包括log复制和leader选举),两个集群配置不能做单边决定,然后leader会再发送一个Cnew的配置,Cnew的配置commit后,old配置就失效了,old配置中的节点也可以安全关闭了。这个机制能够保证Cold和Cnew不会做单边决定,从而保证了安全性。raft的名字
  最后,关于raft这个名字的理解,raft为什么叫raft呢?官网和google上并没有明确的答案。下面是我的理解。
  raft在英文中的名字是木筏的意思,从raft的logo可以看出,它是有三个木头组成,那么木头在英文中有什么名字呢,log的意思也是木头。3个木头代表3个log,分布式的replicatelog,是不是很巧妙?其他参考资料raft深入浅出Raft基本概念MakingsenseoftheRAFTDistributedConsensusAlgorithm

小雪节气话保暖更要话健康,TCL卧室新风空调制热更有新风袭来今天,我们迎来一个圣洁而灵动的节气小雪,这是雪白与昏黄的交织,亦是万物枯荣的号角。小雪过后,黄河以北地区将会陆续出现初雪,提醒人们该御寒保暖了。在气温持续走低的同时,空气湿度大……赵睿郭艾伦转会新动向,海外球队疯狂挖角,姚明遭遇上任最大危机北京时间8月5日,属于CBA联盟的转会新闻,仍然是持续不止,国家队主力后卫赵睿和郭艾伦,先后向俱乐部提出申请,他们的未来去向,也将直接影响CBA联盟的整体格局,赵睿转会的目标很……好饭好菜全拿手,蒸煮炖烤样样精通,苏泊尔远红外电饭煲体验对柴火饭始终保持着一股深深的眷恋之情。忆往昔,一担乾柴古渡头,盘缠一日颇优游。归来涧底磨刀斧,又作全家明日谋。总觉得,柴火才能烧出人间最美的佳肴。在V叔童年记忆里,每到饭点,农……金鸡闭幕式红毯,倪妮终于回来当定毯神针了昨晚的金鸡闭幕式红毯,大家都看了吗?果然不到最后一刻,都不知道还有那么动人身影。2021最后一天,想必大家现在已经蓄势待发,准备晚上好好跨年了吧?那我们就快速……广东连败,赵睿雪上加霜意外离开赛区,琼斯能否延续巨人杀手称号网络劲爆广东大益茶核心后卫黑白矮之一的赵睿离开赛区回到广东,广东大益茶第二阶段开局已经连续输给广厦、山西男篮,并且目前球队因为训练强度大,造成伤病很多;广东媒体人爆料张昊在训练……北京冬奥组委绝对不可以跨出闭环12月23日,北京冬奥组委专职副主席、秘书长韩子荣(左二),北京冬奥组委疫情防控办公室副主任黄春(右二),北京市卫生健康委员会副主任李昂(右一)出席新闻发布会。新华社记者李贺摄……正式签约!潜力新星归国打球加盟四川男篮北京时间4月22日,中国篮球这几年的发展还是不错的,涌现出了不少优秀的年轻球员,这些球员有的早早就被CBA球队所招揽,而有些球员则是有着更高的追求,远赴重洋开启自己的职业生涯,……AirPods年底集体涨价?货源开始紧缺,最高直降500元之前为大家介绍过好多次AirPods购买建议了,最近后台有朋友私信我,告诉我最近AirPods开始涨价。原来这里主要涉及到的是AirPodsPro这款产品,这款前年发布的产品,……男人到了50岁,穿皮鞋太油腻?不妨试试这3款鞋,帅气又减龄人靠衣装的定论,让不少人把重心都放在了衣服上,而忽视了鞋子的重要性。在整体搭配中,鞋子扮演着重要的角色,直接决定了整体造型风格的体现,也彰显了穿着者的个人品味。对于……桌面好物分享音乐,生活慢下来现在生活节奏越来越快,人们像是一列不会停下的小火车一样一直在往前跑。慢,是一种生活态度,是一种心境。唯有慢才能心静,才能做到专心致志。BINNIFA桌面条形电脑蓝牙音箱,……毛家湾景区之毛氏宗祠凤羽毛氏宗祠位于云南省丽江市永胜县程海镇凤羽村委会毛家湾村,宗祠西靠凤凰山,南邻期纳清水村,北接程海湖,东临红石岩山。于2003年在毛氏宗祠原址上复建,总占地面积3。8亩,正殿……企鹅体育晚报丁宁恋情疑似曝光全员篮网即将集结跟随鹅妹一起,全景今日体坛万象!国青国少严禁征调有纹身的球员体育总局目前对对国字号球员纹身问题提出了明确要求:对各级国家队运动员的具体要求中,国家队及U23国家队运……
模特走秀为什么会有比基尼服饰头条创作挑战赛比基尼是一种女性泳装,通常由两个三角形的面料片组成,用细绳或橡皮筋绑在颈部和腰部,露出大部分背部和腹部肌肤。它得名于1946年美国一枚原子弹试验地点比基尼环……小红书正逐渐步入快手的后尘社区氛围带来的原罪。快手和小红书,就像两面不同的镜子,映照出互联网用户的不同侧面。如果你同时拥有这两面镜子,很难不让人怀疑你没有双重人格分裂,而无论怎样,这都是一个你,你……打工人换新机用的久才是王道!vivo和小米喜欢谁?如果您喜欢,可以点击上面的关注二字。后续会为您提供更多有价值的内容。每日分享打工人换新机:用的久才是王道!vivo和小米喜欢谁?价格全面覆盖高中低三档。第一款:红米……2023淄博市第五届环文昌湖半程马拉松赛文马重磅福利!30万淄博日报淄博晚报博览新闻记者董振霞侯林冯金金汪利平让人心动的文马重磅福利来了,跑文马可享文昌湖特色美食!今天,从2023环文昌湖半程马拉松赛组委会传出好消息,当地3……新闻发布厅丨精心筹备马拉松很出彩新闻发布厅新闻发布会现场(记者郭有明摄)精心筹备马拉松很出彩安阳融媒记者张俊军3月24日,在安阳汤阴周易杯汤河湿地公园马拉松赛新闻发布会上,主办方介绍了……紧跟特斯拉,AITO问界官降3万元导读:1月13日,AITO问界宣布自1月13日8点30分起部分车型降价3万元。(文潘昱辰编辑周远方)1月13日,AITO问界宣布自1月13日8点30分起部分车型调整售价,……7个超实用的微信小程序,满足工作生活学习各种需求我们每天使用微信,其实上面隐藏了很多功能。下面给大家推荐7个超实用的微信小程序,满足工作、生活、学习各种需求。01厕所在哪儿史上最强大的找厕所应用,收录了全国范围超……中兴位居2022中国通信专利发明TOP3,6G关键技术概念样近日,2022年中国通信行业专利发明情况出炉。根据智慧芽数据,中兴通讯以4241的专利申请量位居TOP3,当年专利发明总价值超过1。66亿,同时专利授权量2025件,引领通信技……这车虽然比五菱宏光MINIEV贵,但多了两座,续航也长一些消费者对车辆的需求相当多样化,家用车一般注重空间的大小,座椅数量的多少,但很多城市上班族并不喜欢这类家用车,一来车子太大不好开,二来座椅多用不上,很多人一个人开车上下班,对于小……胸膛浮肿!家暴女友提前和好也违法,拜仁后卫卢卡斯被判入狱一年一百岁不死可能都有新闻听,而且还是奇葩至极的真实案例,宛如现实版绿茵好莱坞。近日,马德里法院近日宣布,拜仁慕尼黑后卫卢卡斯因为家暴提前和女友和好涉嫌犯罪,被判处1年监禁,并需要……唯美诗我何德何能娶了你,我的爱人我何德何能娶了你我的爱人一开始是平淡而又简单的生活没有太多的金钱及浪漫却各尽其职和睦安宁我何德何能娶了你我的爱人你来到这个……华为首个行业感知创新基地落户绵阳科技城新区孙丽钟林封面新闻记者周洪攀给传统摄像头加上一个大脑,让其拥有自主思考能力。2月2日上午,华为首个行业感知(四川)创新基地落户绵阳科技城新区。双方的合作,将进一步推动绵阳行……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网