专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

分布式一致性Raft算法日志复制

  第2部分日志复制介绍
  Raft是一种共识算法,旨在以分布式方式编排副本。Raft在设计时考虑了可理解性,只有几个活动部件并且易于实施。在上一篇文章中,我讲了Raft的基础知识,并解释了领导者选举机制。在这篇文章中,我们将关注另一个重要问题日志复制。基础知识
  Raft本质上是一堆复制的状态机。每当领导节点收到请求时,都会将其附加到日志中以确保持久性。相同的日志被复制到多台机器上以实现冗余。
  图0。Raft日志,作者图
  例如,在图1中,当前领导者的日志中有四个条目。关注者1完全同步,但关注者2缺少最新条目。如果你不明白图0中的Term是什么,可以看看我之前的文章。
  用于日志复制的RPC
  为便于理解而设计,Raft仅使用两个RPC调用进行所有通信:
  AppendEntry:这个RPC由leader发起,携带最新收到的命令。它还用作心跳消息。当追随者收到此消息时,选举计时器将重置。AppendEntry消息是这样的结构(我在这里使用Golang)typeAppendEntryArgsstruct{Termintcurrenttermoftheleader,veryIMPORTANTLeaderIdintidoftheleader,0toN1whereNtotalserversEntries〔〕EntrynewdatatosyncPrevLogIndexintimportantmetadataforlogcorrectnessPrevLogTermintimportantmetadataforlogcorrectnessLeaderCommitintwhatindexhavebeenreceivedbythemajority}typeAppendEntryReplystruct{TermintcurrenttermofthereceivingnodeSuccessboolAppendEntrydeclinedoracceptedConflictIndexintifdeclined,specifyingtheconflictingindexConflictTermintifdeclined,specifyingtheconflictingterm}
  如果您不了解每个字段的含义也没关系。我们将一一检查。
  RequestVote:这个RPC用于leader选举,在上一篇文章中有介绍。我将跳过它,因为我们只关心日志复制。日志复制详细信息
  让我们从普通日志复制算法开始。每当领导者收到请求时,它会将日志条目转发给所有追随者并等待大多数人确认。
  问题1:日志排序
  香草算法会在追随者到达后立即向他们发送消息。为此,它只需要消息中的两个字段leaderID和Entry。一个主要问题是由于潜在的消息延迟而无法保留日志顺序。考虑图1中的场景。
  图1。日志排序问题,作者图
  Raft使用两个额外的字段来确保日志的完整性PrevLogIndex和PrevLogTerm。当一个新条目发出时,leader也会发出之前条目的索引和任期号。接收方在将新请求附加到其本地日志之前确保其最新条目具有相同的索引和任期。
  图2。附加记账的AppendEntry,作者图
  有了这两个额外的参数,我们可以实现一些很棒的东西:给定日志索引,如果来自两个日志(在两台不同机器上)的条目共享相同的术语,则它们是相同的如果不同日志中的两个条目具有相同的索引和任期,则所有前面的条目都是相同的
  第一个性质很容易证明。假设索赔是错误的。如果存在两个具有相同任期的不同条目,则其中一个必须比另一个更晚被领导者接收。由于日志是仅附加的,因此其中一个条目将具有更大的PrevLogIndex。但是,如果它们出现在两个不同日志的相同索引中,则它们必须具有相同的PrevLogIndex。(否则接收方拒绝)矛盾!!
  第二个主张可以通过归纳证明:
  图3。声明2的归纳证明,作者图
  这两个保证共同构成了Raft的日志匹配特性。
  问题2:具有冲突条目的关注者
  如果leader日志是集群中唯一的权限,它将覆盖follower的任何冲突。是否有可能丢失一些日志条目?考虑以下情况:
  图4。日志冲突,作者图
  在深入探讨这个问题之前,我想说服您上述情况确实会发生。日志在索引2之前同步。从那里开始,创建这些日志可能会发生以下情况:1)节点2成为领导者(从自己投票,1和0)任期22)节点2收到来自客户端的请求,但未能与其他节点同步3)节点0成为领导者(来自1和它自己的投票),任期为34)节点0收到来自客户端的请求。但未能同步
  现在,如果节点0重新与节点2联系,它将尝试复制其日志,如图5所示
  图5。覆盖冲突,作者图
  如您所见,绿色条目确实被丢弃了。按照目前的设计,这个问题是不可避免的。然而,这里的一个关键观察是绿色条目没有在大多数(至少两个节点)上复制。如果是,它将永远不会被丢弃,原因如下:如果一个条目在大多数情况下被复制,则至少有N21个节点拥有它对于没有进入选举的节点,它需要其他节点的N2票(候选人总是为自己投票)由于候选人没有条目,因此具有条目的N21个节点不会投票给它(选举限制在第1部分中解释)Itwontgetenoughvotestowintheelection
  这就是Raft的第二个关键特性日志完整性属性。如果一个条目在majority上被复制,它将始终出现在未来的领导者日志中,无论它可能是哪个节点。如果没有在大多数人身上复制,则如果领导层发生变化,条目可能会被删除。
  对于日志完整性属性,重要的是不要在大多数人收到之前确认客户端请求。
  问题3:何时提交?
  最后,我们到了最后一个问题什么时候提交条目?首先什么是commit,为什么要commit?Raft是一种低级共识算法,供上层应用程序使用,如键值存储(例如ZooKeeper)。当一个条目被Raft安全地复制时,我们要确保客户端可以通过应用程序看到它。因此,Raft需要决定何时告诉上层应用程序一个条目已准备好使用(一个部分复制的条目,因为领导者日志中的最后一个条目不应该是可见的!)。
  图6。提交,作者图
  到目前为止,我们的香草算法没有携带任何关于提交索引的信息。因为数据流是单向的,从领导者流向追随者,所以节点不知道一个条目是否在大多数节点上被复制。
  为了解决这个问题,我们可以在AppendEntry消息中添加另一个字段,称为LeaderCommit。如果大多数接收到一个条目,领导者会增加提交索引。下面是跟踪领导节点使用的提交索引的实际代码。forn:rf。getLastIndex();nrf。commitIndex;n{startfromthelatestentrycount:1ifrf。log〔n〕。Termrf。currentTerm{leaderonlycaresaboutentriesofitstermentrieswithsmallertermsarecommitedautomaticallywhenhighertermsarecommittedfori:0;ilen(rf。peers);i{ifrf。peer〔i〕。hasEntry(n){count}}}ifcountlen(rf。peers)2{rf。commitIndexnnoneedtogofurtherback,forreasonsstatedinline7and8break}}
  领导者如何跟踪提交索引概括
  在这篇文章中,我们从普通的日志复制算法(广播条目,没有任何额外的簿记)开始,并通过考虑各种极端情况将其发展为成熟的版本。日志复制中最重要的RPC是AppendEntryRPC,它使用具有四个字段的结构:Term:对于日志复制和领导者选举非常重要LeaderId:显示候选人的身份。条目:领导者希望复制的条目列表。PrevLogIndex:在Entries〔0〕之前的日志条目的索引。用于确保日志完整性和日志匹配属性PrevLogTerm:在Entries〔0〕之前的日志条目的任期。用于确保日志完整性和日志匹配属性LeaderCommit:对上层应用很重要。只有已提交的条目才能应用于应用程序并且对客户端可见。

春天的衣服加入购物车了吗?这些胶囊衣橱搞定你穿搭,给你排排雷头条创作挑战赛今年我真的特别喜欢春天,每天看到阳光绿叶和蓝天,都觉得生活里的枯燥和烦闷,都被带点暖意的风轻柔的消解了。春天的衣服我也早早在购物车里挑好了,但有些姐妹大腿肉肉最多的梨可感的生活,无止境的诗意春天的正确打开方式BEAUTIFULLIFE生活之美生活琐碎,万物成诗在高强度快节奏的现代都市生活,我们似乎习惯了凡事讲究效率和目的,好像一切不以结果目的效率为导向的行为,都是在浪费时间浪费生命,于软糯香甜的苹果山药饼,大人小孩子都爱!来源昆明日报掌上春城食材明细山药苹果白芝麻。苹果山药饼的做法步骤1。山药去皮,上锅蒸熟。2。糖心苹果切开,去皮切成丝。3。山药压成泥状。4。加入苹果丝,再加入适量面粉,揉成不粘手的白酒多少度喝最好?酒厂总工程师道出实情,建议新老酒友搞懂再喝古往今来,时代变迁,一切都在变与不变中发展,我国的白酒文化流传了上千年,影响深远。而随着社会的进步,各式各样的酒也应运而生,类型各种各样,除此之外,还有不一样的香型,在我国就有十二打翻春日调色盘新洲红色旅游线好春天春有约,花不误。伴随着春的脚步,武汉市新洲区红色旅游线春意盎然,3月16日,记者在沿线看到,各色花朵肆意绽放,芳菲争艳,犹如打翻了春天的调色盘。从空中望去,五颜六色的花朵在绿水青山我科学家攻克激光雷达抗干扰和高精度并行探测世界性难题极大降低未来激光雷达系统体积功耗和成本原标题我科学家攻克激光雷达抗干扰和高精度并行探测世界性难题极大降低未来激光雷达系统体积功耗和成本北京大学电子学院王兴军教授课题组常林研究员课题组在两年攻关的基础上,研制出一种全新的成都产销联动打响新一轮价格战,单辆车最高补贴15万元集微网消息,3月17日,成都发布消息称,今日起,龙泉驿区产销联动汽车消费活动正式启动,发放补贴总金额高达1亿元,单车累计补贴最高达15万元,该活动将成为成都市汽车促销活动史上活动优二十万九千八就能买汉唐?比亚迪打响第二轮新能源价格战!3月16日,2023款比亚迪唐DMi冠军版和汉EV冠军版正式上市,分别推出3款车型和5款车型,售价区间分别为20。9823。38万元以及20。9829。98万元。同时4月30日前购每月500元人民币!谷歌将上调YouTubeTV订阅价格CNMO新闻近年来,电视流媒体服务快速发展。3月17日,CNMO了解到,美国科技巨头谷歌将YouTubeTV的订阅价格提高到每月73美元(折合人民币约500元)。据了解,谷歌发给订近期比特币价格达到新高点,新型加密货币ShibLa也得到关注加密货币市场一直是投资者关注的焦点,尤其是比特币的价格一直处于高位。近期比特币的价格一度达到了近期最高点,让很多人感到震惊和兴奋。虽然比特币的价格波动性很大,但是无疑是最受欢迎的数70城新房价格近八成环比上涨3月份小阳春可期专家称,目前二手房供应充足,房价不会出现普遍性大幅上涨本报记者孟珂伴随政策端继续发力,信贷环境相对宽松,房地产市场活跃度提升。3月16日,国家统计局发布数据显示,2月份,70个大中
汽油又要涨价了,以后是不是能源车要越来越受欢迎了?是的。汽车电动化是毋庸置疑的发展趋势,即使短时间汽油没涨价甚至降价都不会影响这个趋势。随着电网充电站电池等技术的完善电动车会越来越受欢迎。电动汽车拥有众多燃油车不具备的优点不必忍受有人说用华为的大部分是中老年人,对此你有什么看法?别人爱怎么说就怎么说,我没有看法。我喜欢用华为手机不是因为我老了,我只是觉得华为手机好用,又是国产手机,肯定要支持!是不是中老年人在用,这个不太清楚,我只知道,在我体制内的朋友圈里如果oppo和vivo两个公司上市大概能够值多少钱?能够有一个小米值钱吗?资本市场是讲估值的,估值是指上市后你在未来一定时间内值多少钱,而估值又是根据行业来测算。大家看着小米是一家手机公司,和制造业相关是不是?其实资本市场(包括小米自己)并没有把小米看作王者荣耀玩家怒喷明世隐就是腾讯向废物玩家妥协的产物,你认同这种说法吗?个人觉得有一定道理。先说一个现象,相信各位都有遇到,在王者20星左右的局里,会碰到那么些玩家,上来就让帮抢小明,然后给你发战绩,动辄就是90,这种玩家如果不是双排或者多排,那么你这在河南酒席上,一般最后一道菜是什么?吃,是一件可以很讲究也可以很将就的事。河南的酒席最古老的又很有特色的,在黄河以北要数是三八席八个凉菜先上,服务的小男生手举托盘先上四个荤菜再回头上四个素菜,素菜里最后一个上的是青菜大家怎么看将扶持年轻化优质内容的创作?谢谢邀请年青化优质内容的作品,是作品而不是人。年青化优质作品出自谁的手并不重要,重要的是作品内容是不是朝气蓬勃年青优质。当然应该有后起之秀,应该有新鲜血液。但我估计专业到头条来搞創如果你有一大笔钱,你会投资什么?为什么?如果有钱了,我认为应该要进行这样的资产配置1刚需房要先买无论房价高低,该买的还是要买,不能因为房价贵了租一辈子的房,那怕你在郊区置业,房子永远是人生奋斗的第一目标。要知道,将来成家为什么去面试时,人力资源部和本专业主管都可以过关,到董事长那经常卡壳?为什么人资部及本专业主管面试都能过,而到董事长这边卡壳呢?虽然不知道你面试的具体是什么岗位,但是需要董事长亲自面试才能裁定的,肯定是核心技术岗位或者高管!你卡壳主要原因还是你本身的是不是二胎都不容易怀上?跟年纪有影响的,女性到了一定年纪,卵巢功能会下降的!不过也要考虑其他因素!还真是!有几个意外二胎的,都是男孩!但是几个一胎容易怀孕的,二胎却迟迟不怀。身边就有几个要了好几年不成功,雪中悍刀行剑九黄的功夫排名第几?其功夫到底有多厉害?老黄何许人?西蜀剑匠出身,铸剑三十年自悟剑道,创上乘剑法孤身行走江湖,集天下十大名剑其中六把入剑匣。在与东海武帝城排名天下第二的王仙芝一战败北后成名!留下一柄名剑黄庐于武帝城墙后消负债60W,35岁的年龄,是不是活的特失败?既然不甘心,那就活出个样来,从头再来,谁年轻时没犯错,不要去看远方模糊的,而做手边清楚的事。为明天做准备,集中你所有智慧,所有热忱,所有坚强,把工作做的尽善尽美,这就是你能应付未来
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网