Raft笔记1

preview
需积分: 0 0 下载量 75 浏览量 更新于2022-08-04 收藏 1.88MB PDF 举报
Raft笔记1 - 服务器交互 Raft是一种为了管理复制日志的一致性算法,旨在解决分布式系统中的容错问题。它由多副本状态机的角度提出,用于管理多副本状态机的日志复制。Raft算法使用了更强的假设来减少了需要考虑的状态,使之变的易于理解和实现。 Raft中的角色和作用: 1. Leader(领导者):接受所有客户端请求,并向Follower同步请求日志,当日志同步到大多数节点上后告诉Follower提交日志。 2. Follower(跟随者):接受并持久化Leader同步的日志,在Leader告知日志可以提交之后,提交日志。 3. Candidate(候选人):它是处于领导者(Leader)与跟随者(Follower)之间的状态,用于参与leader选举。 Raft概念和具体协议: 1. 状态(State):Raft中的状态包括Leader、Follower、Candidate三种状态。 2. 追加条目RPC(AppendEntries RPC):Leader向Follower同步日志的RPC调用。 3. 请求投票RPC(RequestVote RPC):Candidate向其他服务器请求投票的RPC调用。 4. 所有服务器需遵守的规则:Raft协议中所有服务器需遵守的一些规则,例如Leader选举的限制条件、日志的提交时机等。 任期(Terms)的概念: 1. 任期的概念:Raft中的任期是指Leader的选举周期,Leader在任期内会周期性地向Follower发送心跳信息。 2. 任期的变化关系:Leader的任期可能会因为多种原因而变化,例如Leader宕机、网络延迟等。 Raft算法的特性: 1. 安全性保证:Raft算法可以保证绝对不会返回一个错误的结果,在非拜占庭错误情况下,包括网络延迟、分区、丢包、冗余和乱序等错误都可以保证正确。 2. 可用性:Raft算法可以保证集群中只要有大多数的机器可运行并且能够相互通信、和客户端通信,就可以保证可用。 3. 不依赖时序来保证一致性:Raft算法可以在物理时钟错误或者极端的消息延迟情况下保证一致性。 Raft作者认为Paxos的缺点: 1. 可理解性:Paxos算法不够直观,构成多决策Paxos增加了很多错综复杂的规则。 2. 缺乏标准的实现:Paxos算法描述和实现现实系统中间有着巨大的鸿沟,最终的系统建立在一种没有经过证明的算法之上。 Raft的动机: 1. 可理解性:Raft算法的主要动机是为了提高可理解性,以便根据现实需求对Raft进行扩展。 2. 问题分解:Raft算法将问题分解为可被解决的、可解释的和可理解的子问题(leader选举问题,日志同步问题,安全信证明)削减状态空间数量,减少状态空间。 Raft算法的优点: 1. 可理解性:Raft算法的设计目标是提高可理解性,使得算法变得简单易懂。 2. 高效性:Raft算法可以在大多数情况下保证高效的性能。 3. 安全性:Raft算法可以保证安全性,使得系统变得更加可靠。