raft游戏下载 raft(15)


8 客户端交互这?一节将介绍客户端是如何和 Raft 进?行行交互的,包括客户端如何发现领导?人和 Raft 是如何?支持线性化语义的 。这些问题对于所有基于?一致性的系统都存在,并且 Raft 的解决?方案和其他的也差不不多 。Raft 中的客户端发送所有请求给领导?人 。当客户端启动的时候,他会随机挑选?一个服务器器进?行行通信 。如果客户端第?一次挑选的服务器器不不是领导?人,那么那个服务器器会拒绝客户端的请求并且提供他最近接收到的领导?人的信息(附加条?目
请求包含了了领导?人的?网络地址) 。如果领导?人已经崩溃了了,那么客户端的请求就会超时;客户端之后会再次重试随机挑选服务器器的过程 。我们 Raft 的?目标是要实现线性化语义(每?一次操作?立即执?行行,只执?行行?一次,在他调?用和收到回复之间) 。但是,如上述,Raft 是可以执?行行同?一条命令多次的:例例如,如果领导?人在提交了了这条?日志之后,但是在响应客户端之前崩溃了了,那么客户端会和新的领导?人重试这条指令,导致这条命令就被再次执?行行了了 。解决?方案就是客户端对于每?一条指令都赋予?一个唯?一的序列列号 。然后,状态机跟踪每条指令最新的序列列号和相应的响应 。如果接收到?一条指令,它的序列列号已经被执?行行了了,那么就?立即返回结果,?而不不重新执?行行指令 。只读的操作可以直接处理理?而不不需要记录?日志 。但是,在不不增加任何限制的情况下,这么做可能会冒着返回脏数据的?风险,因为领导?人响应客户端请求时可能已经被新的领导?人作废了了,但是他还不不知道 。线性化的读操作必须不不能返回脏数据,Raft 需要使?用两个额外的措施在不不使?用?日志的情况下保证这?一点 。?首先,领导?人必须有关于被提交?日志的最新信息 。领导?人完全特性保证了了领导?人?一定拥有所有已经被提交的?日志条?目,但是在他任期开始的时候,他可能不不知道那些是已经被提交的 。为了了知道这些信息,他需要在他的任期?里里提交?一条?日志条?目 。Raft 中通过领导?人在任期开始的时候提交?一个空?白的没有任何操作的?日志条?目到?日志中去来实现 。第?二,领导?人在处理理只读的请求之前必须检查?自?己是否已经被废黜了了(他?自?己的信息已经变脏了了如果?一个更更新的领导?人被选举出来) 。Raft 中通过让领导?人在响应只读请求之前,先和集群中的?大多数节点交换?一次?心跳信息来处理理这个问题 。可选的,领导?人可以依赖?心跳机制来实现?一种租约的机制,但是这种?方法依赖时间来保证安全性(假设时间误差是有界的) 。
9 算法实现和评估我们已经为 RAMCloud 实现了了 Raft 算法作为存储配置信息的复制状态机的?一部分,并且帮助 RAMCloud 协调故障转移 。这个 Raft 实现包含?大约 2000 ?行行 C++ 代码,其中不不包括测试、注释和空?行行 。这些代码是开源的 。同时也有?大约 25 个其他独?立的第三?方的基于这篇论?文草稿的开源实现,针对不不同的开发场景 。同时,很多公司已经部署了了基于 Raft 的系统 。这?一节会从三个?方?面来评估 Raft 算法:可理理解性、正确性和性能 。
9.1 可理理解性为了了和 Paxos ?比较 Raft 算法的可理理解能?力力,我们针对?高层次的本科?生和研究?生,在斯坦福?大学的?高级操作系统课程和加州?大学伯克利利分校的分布式计算课程上,进?行行了了?一次学习的实验 。我们分别拍了了针对 Raft 和 Paxos 的视频课
程,并准备了了相应的?小测验 。Raft 的视频讲课覆盖了了这篇论?文的所有内容除了了?日志压缩;Paxos 讲课包含了了?足够的资料料来创建?一个等价的复制状态机,包括单决策 Paxos,多决策 Paxos,重新配置和?一些实际系统需要的性能优化(例例如领导?人选举) 。?小测验测试?一些对算法的基本理理解和解释?一些边?角的示例例 。每个学?生都是看完第?一个视频,回答相应的测试,再看第?二个视频,回答相应的测试 。?大约有?一半的学?生先进?行行 Paxos 部分,然后另?一半先进?行行 Raft 部分,这是为了了说明两者从第?一部分的算法学习中获得的表现和经验的差异 。我们计算参加?人员的每?一个?小测验的得分来看参与者是否在 Raft 算法上更更加容易易理理解 。我们尽可能的使得 Paxos 和 Raft 的?比较更更加公平 。这个实验偏爱 Paxos 表现在两个?方?面:43 个参加者中有 15 个?人在之前有?一些 Paxos 的经验,并且 Paxos 的视频要?长 14% 。如表格 1 总结的那样,我们采取了了?一些措施来减轻这种潜在的偏?见 。我们所有的材料料都可供审查 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。