范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

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

你们的手机一般多久会换一次?文小伊评科技影响手机使用寿命的关键性根据优先级来排列就是如下几点性能,做工品质,系统优化以及售后的可靠度。只要这几个方面的表现都不错,且没有人为损坏或者丢失,这款手机一般都可以用的互联网大厂开始1075模式了?这份2022加班工资日历和提醒,希望你用不上据报道,知名互联网企业字节跳动近日更新了其加班管理规定,将采取1075工作制,即早10点上班到晚7点下班,一周工作5天工作日7点后加班需提交申请,每天最多加班3小时,每月最多36小个人理解中的小米,以及手机发展简史小米手机是比较稳定的手机品牌,不会轻易死掉。MIUI的方便和全能,使小米手机从1代一路走到目前的11代。发展过程中,中间死掉了很多著名品牌。乐视,htc,锤子,天语,金立,包括lg字节开启1075模式,打工人走进新时代来源环球人力资源智库作者GHR观察员Domi字节跳动将开启1075模式悄悄登上热搜!1075模式,也就是早上10点上班,下午7点下班,每周工作5天工作日7点后加班需提交申请,要有加双11最值得买的3款手机,帮你们整理好了,直接抄作业吧一年一度的双11剁手节到了,很多消费者都准备在此期间大干一场,消费激情都被点燃了。但不得不承认,双11确实是最适合入手手机的时候,因为数码产品的价格很透明,不会跟其他的厂商一样玩套这下怎么下台?马斯克捐款?你敢我就敢。世粮署随便查联合国世界粮食计划署署长比斯利(DavidBeasley)日前接受美国有线电视新闻网(媒体)採访时,直指世界饥饿问题严重,呼吁全球富豪立即站出来伸出援手。他也点名全球首富特斯拉创办68亿吞了百世快递!外资极兔目的不单纯这些年,随着电商的不断发展,很多人都养成了网购习惯,特别是年轻一代,网购能力特别的强,再加上直播带货的崛起,各大主流的购物网站和短视频网站也兴起了一大波的网红和明星带货热潮,这又进Wireshark的抓包和分析WireShark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数企业智慧屏和智能会议平板是什么关系?会议平板圈里挤进来了一个似曾相识的新面孔华为???企业智慧屏。说它似曾相识,是因为它的身材和长相都与会议平板极为相似,如果将品牌LOGO抠下来,没有人能分清哪个是华为企业智慧屏,哪双十一手机推荐第三弹20002500元篇的中端机大盘点世界上本来没有什么双11双12,买的人多了也就有了所谓的购物节狂欢节。每到这几个购物节,大家都忍不住地买买买,手机到了双十一肯定也有不错的优惠力度,当然即使优惠力度再大,手机更新换2000元档位,双风机扫地机器人,我选择悠飞X8双旋风扫拖机器人近两年科技互联网得到了飞速的发展,众多概念陆续落地,对生活和工作都带来了很大的影响。这不仅能够看到行业大环境的发展,也能够看到一大批好的企业崛起。他们不仅是各行各业的龙头,也是行业
小米11预热前的预热开始,雷军暗示新机电池更大上午10点整,等待小米11预热的网友,却等来了雷军对小米10的回顾,然而这一波辞旧迎新非常理的出牌,恰恰证实了小米11预热马上开始,根据小米以往新机预热,今天属于小米11预热前的预骁龙888成功避开大坑,发热控制的非常优秀前段时间的A14与麒麟9000这两款5nm处理器的游戏表现都不是特别理想,问题出现在发热量大导致降频,网友将其称之为5分钟滴神,近日高通官方对同样是5nm的骁龙888处理器,进行了华为Nova8海报曝光,升级点一目了然华为将于本月23日发布Nova8系列,而今日该机的宣传海报被曝光出来,从这张图我们就可以看出Nova8的绝大多数信息,简单来说,相比前代Nova7系列,这一代外观改变不大,配置升级Note9系列首销数据出炉,网友终于不用抢了12月1日0点,RedmiNote9Pro和Note9在全平台开售,直至12点,RedmiNote9系列全平台销量突破30万台,这个成绩与去年Note8系列一样,属于优势开局,爆款小米11Pro壳膜厂爆料开始,横向矩阵四摄四曲屏小米11系列很快就会发布,至于有多快,从雷军说的即将发布和官方最近抽送小米11这一系列举动来看,很大概率就是这个月发,而最近关于小米11的爆料也越来越多,先是标准版的背部设计曝光,新机半年一迭代,一U用三代,OPPO的战术小米学不来今年6月OPPOReno4系列发布,时隔半年Reno5系列又来了,近日关于这款手机的外观及配置基本已经放的差不多,其中外观设计与前代Reno4系列差别不大,主要区别在于配色工艺上的RedmiNote9系列备货充足,网友上演瞬间变脸RedmiNote9系列发布前,看JD平台预约人数已经接近110万,发布后看网友的反应与之前K30S那次很像,这不得不担心,RedmiNote9会不会也很难抢,不过从目前的情况来看离开华为的荣耀解决芯片问题,就要做国内第一?在华为出售荣耀,且不占任何股份时,荣耀就已经成为新的手机品牌,在目前华米OV占据国内大部分手机市场的情况下,老品牌都扛不住,可想而知一家新品牌面临的挑战有多大,不过荣耀相比平地新起MIUI12。5更新的功能及发布时间预测为迎接MIUI12。5的到来,MIUI12将于下周一停更,那么12。5将会带来什么,又与目前的MIUI12有何不同,下面来聊聊!从MIUI12更新至今,会发现MIUI一直在做的一件手机塑料机身引发热议,轻薄就得用塑料?最近发布的OPPOReno5系列由于该机采用的塑料中框,且除主打的星河入梦配色外,其余两款配色均采用塑料背板。OPPO的这一搭配引发了热议,下面就来聊聊文艺复兴的塑料机身到底好不好雷军卢伟冰暗示,搭载骁龙888的小米11,本月发布昨晚高通的5nm处理器也正式发布了,命名骁龙888,由小米11全球首发,由于今年小米10系列出色表现,拿下全球首发也是意料之中,在说骁龙865也是小米全球首发的,但意料之外的是,小