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

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

  第 2 部分 — 日志复制介绍
  Raft 是一种共识算法,旨在以分布式方式编排副本。Raft 在设计时考虑了可理解性,只有几个活动部件并且易于实施。在上一篇文章中,我讲了 Raft 的基础知识,并解释了领导者选举机制。在这篇文章中,我们将关注另一个重要问题——日志复制。 基础知识
  Raft 本质上是一堆复制的状态机。每当领导节点收到请求时,都会将其附加到日志中以确保持久性。相同的日志被复制到多台机器上以实现冗余。
  图 0. Raft 日志,作者图
  例如,在图 1 中,当前领导者的日志中有四个条目。关注者 1 完全同步,但关注者 2 缺少最新条目。如果你不明白图0中的 Term 是什么,可以看看我之前的文章。
  用于日志复制的 RPC
  为便于理解而设计,Raft 仅使用两个 RPC 调用进行所有通信:
  AppendEntry: 这个RPC由leader发起,携带最新收到的命令。它还用作心跳消息。当追随者收到此消息时,选举计时器将重置。AppendEntry消息是 这样 的结构(我在这里使用 Golang) type AppendEntryArgs struct { 	Term			int		// current term of the leader, very IMPORTANT 	LeaderId 		int		// id of the leader, 0 to N-1 where N = total servers 	Entries			[]Entry // new data to sync 	PrevLogIndex	int		// important metadata for log correctness 	PrevLogTerm		int		// important metadata for log correctness 	LeaderCommit	int 	// what index have been received by the majority }  type AppendEntryReply struct { 	Term 			int 	// current term of the receiving node 	Success			bool	// AppendEntry declined or accepted 	ConflictIndex	int		// if declined, specifying the conflicting index 	ConflictTerm	int		// if declined, specifying the conflicting term }
  如果您不了解每个字段的含义也没关系。我们将一一检查。
  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 和它自己的投票),任期为 3  4) 节点 0 收到来自客户端的请求。但未能同步
  现在,如果节点 0 重新与节点 2 联系,它将尝试复制其日志,如图 5 所示
  图 5. 覆盖冲突,作者图
  如您所见,绿色条目确实被丢弃了。按照目前的设计,这个问题是不可避免的。然而,这里的一个关键观察是绿色条目没有在大多数(至少两个节点)上复制。如果是,它将永远不会被丢弃,原因如下: 如果一个条目在大多数情况下被复制,则至少有 N/2 + 1 个节点拥有它 对于没有进入选举的节点,它需要其他节点的N/2票(候选人总是为自己投票) 由于候选人没有条目,因此具有条目的 N/2 + 1 个节点不会投票给它(选举限制在第 1 部分中解释) It won"t get enough votes to win the election
  这就是 Raft 的第二个关键特性—— 日志完整性属性 。如果一个条目 在 majority 上被复制 ,它将始终出现在未来的领导者日志中,无论它可能是哪个节点。如果没有在大多数人身上复制,则如果领导层发生变化,条目可能会被删除。
  对于日志完整性属性,重要的是不要在大多数人收到之前确认客户端请求。
  问题 3:何时提交?
  最后,我们到了最后一个问题——什么时候提交条目?首先什么是commit,为什么要commit?Raft 是一种低级共识算法,供上层应用程序使用,如键值存储(例如 ZooKeeper)。当一个条目被 Raft 安全地复制时,我们要确保客户端可以通过应用程序看到它。因此,Raft 需要决定何时告诉上层应用程序一个条目已准备好使用(一个部分复制的条目,因为领导者日志中的最后一个条目不应该是可见的!)。
  图 6. 提交,作者图
  到目前为止,我们的香草算法没有携带任何关于提交索引的信息。因为数据流是单向的,从领导者流向追随者,所以节点不知道一个条目是否在大多数节点上被复制。
  为了解决这个问题,我们可以在AppendEntry 消息中添加另一个字段,称为 LeaderCommit。 如果大多数接收到一个条目,领导者会增加提交索引。下面是跟踪领导节点使用的提交索引的实际代码。 for n := rf.getLastIndex(); n >= rf.commitIndex; n-- { // start from the latest entry 	count := 1  	if rf.log[n].Term == rf.currentTerm { // leader only cares about entries of its term // entries with smaller terms are commited automatically when higher terms are  // committed  		for i := 0; i < len(rf.peers); i++ { 			if rf.peer[i].hasEntry(n) { 							count++ 						} 					} 		} 	if count > len(rf.peers) / 2 { 		rf.commitIndex = n // no need to go further back, for reasons stated in line 7 and 8 		break 	} }
  领导者如何跟踪提交索引 概括
  在这篇文章中,我们从普通的日志复制算法(广播条目,没有任何额外的簿记)开始,并通过考虑各种极端情况将其发展为成熟的版本。日志复制中最重要的 RPC 是 AppendEntry  RPC,它使用具有四个字段的结构: Term :对于日志复制和领导者选举非常重要 LeaderId  : 显示候选人的身份。 条目 :领导者希望复制的条目列表。 PrevLogIndex :在Entries[0] 之前的日志条目的索引。用于确保 日志完整性和日志匹配属性 PrevLogTerm :在Entries[0] 之前的日志条目的任期。用于确保 日志完整性和日志匹配属性 LeaderCommit :对上层应用很重要。只有已提交的条目才能应用于应用程序并且对客户端可见。

湖北首家5G电竞营业厅亮相中国光谷工人日报中工网记者邹明强通讯员王政随着元宇宙概念的火热,电子竞技云游戏等相关产业的市场潜力被持续激发。湖北移动借势电竞产业风口,赋能数字湖北青春IP,创新打造了武汉首家5G电竞主题国海证券发布证券行业首支企业文化歌曲中证网讯(王珞)专业专注,全心全力,一起共赢美好作为打造文化品牌的创新尝试,国海证券近日正式发布了证券行业首支企业文化主题原创说唱歌曲全心全力,展现了新时代国海人的精气神,向外界传大湾区最大的环湖碧道(双环湖碧道)即将在深圳宝安出炉!众所周知,东莞松山湖的环湖碧道是目前大湾区最长的环湖碧道,总长度约50公里,每年吸引大湾区数百万游客来此打卡旅游。但是,从2023年起,深圳也许会打破这一记录。因为深圳市宝安区的双取消入境核酸检测首日,珠海旅行社导游口岸迎接过关旅客为了进一步推动珠澳两地的旅游交流,1月8日,澳门中国国际旅行社成功组织粤澳首发团。首发团的57名成员以珠澳两地旅游从业人员为主,经拱北口岸出发前往斗门,展开为期一日的路线踩点活动。北宋统一战争北宋统一战争宋建隆三年至太平兴国四年(962979),宋军在长江流域岭南和河东地区,先后攻灭割据势力的统一战争。唐末五代以后,中国陷入分裂割据的局面。后周显德七年(960)正月,赵咸丰在位时,慈禧为何斗不过慈安?咸丰在位时,慈禧斗不过慈安这是正常的。因为清朝皇室有着十分严格的嫡庶尊卑制度,说白了就是她俩妻与妾的身份,注定慈安始终要压慈禧一头。值得一提的是,即便咸丰驾崩后,慈禧依旧十分害怕慈百度造的车怎么样?两个字惊艳新能源的风刮进汽车领域有些年头了,造车新势力也逐渐不那么新了。按理说,这些创业搞新能源汽车的,有能力推出车型上市的,应该早就上市了,要是品牌旗下目前还没有车型上市,那大概是凉了。然大衣哥女儿朱雪梅被嘲陪嫁500万没人接手,坦言只想做个普通人2011年,在我是大明星的济宁赛区海选现场,一位身穿大衣的选手登上了舞台。他手里拿着话筒,神态有些紧张,用一口夹杂着方言味的普通话介绍着自己。看到这样的选手,台下的评委脸上带着三分开国少将带妻回乡,见到等自己22年的童养媳,妻子却说接她回家1957年,江西省泰和县苑前乡的村口前,张凤娥穿着自己刚刚做好的新衣服,不断地探头张望着,路过的人莫不是一脸欣喜,开玩笑般对她说道凤娥,你丈夫马上要回来啦,开心不?年仅40的妇女脸日本幼儿园组织小朋友给养老院捐钱,被网友骂惨了大家小时候有没有过爱心募捐?比如施舍街边乞丐帮助家庭困难的同学敬老院慰问等等。无论是自愿的还是组织要求,小通始终认为哪怕能够对他人有一点点帮助都是值得去做的。今天的事情来自日本的幼马六甲鸡场街冀与中国游客重逢在春天中新社马六甲1月8日电题马六甲鸡场街冀与中国游客重逢在春天作者陈悦魏源农历兔年新年将至,马来西亚马六甲鸡场街上彩灯高挂,处处是拜年的生肖兔图案和好口彩的祝福语,一派节日气氛。鸡场街
亿纬锂能再投百亿,60GWh超级工厂荆门动工2月1日,亿纬锂能六七八九区73GWh工厂投产暨60GWh超级工厂动工仪式在荆门举行。此前一天,亿纬动力与荆门高新区管委会签订合同书,计划新增投资108亿元,用地约1000亩,新建这些城区,富可敌省!原创刘晓博最近,各地正在发布2022年的成绩单。从这些成绩单里,可以清晰地看到经济发展的不均衡。截至2022年,中国一共诞生了3个GDP超过8000亿的城区,其中两个城区更是超过了早参全面实行股票发行注册制改革正式启动冷空气明天到今天是2月2日,农历正月十二,亲爱的用户和粉丝们,早上好!广州今天阴天,有零星小雨和轻雾,气温1526视频加载中中国证监会2月1日,全面实行股票发行注册制改革正式启动2023年2月基金老将还能否背负起110万基民的期待?睿远傅鹏博2022巨亏30原标题61岁基金老将,还能否背负起110万户基民的期待?睿远傅鹏博2022巨亏30,廉颇老矣,尚能饭否?丨基金人物志(九)因此,要投傅鹏博的基金,就必须把什么灵活配置新赛道新概念高202302收盘小结20230202A股今日成交量10243亿,比昨天增加197亿涨2315只跌2571只涨停53只跌停14只今日盈利4137总资产212948持仓市值1716122023年总计1月4中西南最大的钢铁电商平台,是如何炼成的?不破不立。好文5930字10分钟阅读作者周文辉,中南大学商学院教授,管理案例研究中心主任。林晖阳,中南大学企业管理硕士研究生。2020年,大大买钢并购大汉物流,开启融合发展产业互联美国要过苦日子了?寒气传遍股债房。文华商韬略高飞科技行业大裁员并不是美国经济下行的迹象。2022年11月,在一篇报告里,著名投资银行高盛的分析师做出了这个预测。但只过了一个月,高盛就开启了史上规模最A股注册制内资不买账!2月3日A股是涨是跌?提前给出预判今天A股的走势肯定让很多人感觉意外!对注册制预期过高的人,让高开低走弄的不知所措,而预期过低看空的人,却被探底回升搞得不知所以然。盘前老阳对指数给出两个预判一是今天看涨必定收阳,但增长计划不变星巴克中国门店达6090家北京商报讯(记者张天元)2月3日,北京商报记者由星巴克中国了解到,星巴克发布2023财年第一季度财报。数据显示,星巴克第一季度综合净收入增长8,至87亿美元,其中包括约3的汇率折算全面注册制来了!带来哪些影响?利好哪些板块?靴子终于落地!1日晚间,中国证监会就全面实行股票发行注册制涉及的首次公开发行股票注册管理办法等主要制度规则草案向社会公开征求意见。历时4年之久,至此,全面实行股票发行注册制改革正式三胎概念股火了,孩子王能成王吗?近日,四川生育登记取消结婚限制取消数量限制的消息,在网上引起热议。红星资本局注意到,此消息出来后,A股三胎概念股异动拉升。其中,有着母婴零售第一股的孩子王(301078。SZ)在1