searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Raft算法的优势总结

2023-07-11 10:08:21
17
0

1. Paxos和Raft算法简介

1.1 Paxos算法简介

Paxos算法(Lamport 2001)是Lesile Lamport提出的一种基于消息传递、高容错的共识算法。 分布式系统中的节点通信有两种模型:共享内存和消息传递。 基于消息传递通信模型的分布式系统不可避免地会遇到进程减慢和杀掉、消息延迟、丢失、重复等问题。 Paxos算法是一种在存在上述异常的情况下仍能保持一致性的协议。Paxos算法用一个希腊故事来描述。 在Paxos中,共有三种角色,分别是Proposer(用于发布提案提案)、Acceptor(可以接受或拒绝提案)、Learner(研究选中的提案,当提案被超过一半的Acceptor接受时)。 下面是Paxos想要解决的问题的更精确的定义:1. 决议(值)只有在提案者提出后才能被批准 2. 在 Paxos 算法的一个执行实例中,只有一个值被批准(选择) 3. 学习者只能得到选择的值

所有食物请求必须由全局唯一的服务器协调和处理。 这样的服务器称为领导者服务器,其余的其他服务器成为跟随者服务器。 Leader 服务器负责将客户端事务请求转换为事务提案并将提案分发给集群中的所有 follower 服务器。 之后,Leader服务器需要等待所有Follower服务器的反馈。 一旦超过一半的follower服务器给出了正确的反馈,leader就会再次向所有follower服务器分发commit消息,要求其提交之前的提案。

 

1.2 Raft算法简介

Raft(Ongaro and Ousterhout,2014)实现了与 Paxos 相同的功能,将分布式一致性分解为多个子问题: 领导者选举、日志复制、安全、日志、成员资格变更 成员资格变更。Raft 将系统中的角色分为领导者leader、追随者和候选人:

Leader:接受客户端请求,并将日志请求同步给Follower。 当日志同步到大部分节点后,它会告诉Follower提交日志。
Follower:接受并持久化Leader同步的日志,并在Leader通知可以提交日志后提交日志。
Candidate:领导者选举过程中的临时角色。
Raft要求系统任何时候最多有一个Leader,一个普通的选举过程中只有Leader和Followers。

2. Raft的优势总结

2.1 raft更容易理解

对于学习者来说,Raft 更容易理解,因为 Raft 将算法中使用的各种元素和过程描述为民主社会中的选举。领导人(leader)由民众投票选举产生。 在Raft算法的开始,没有leader,集群中的所有参与者都是群众。 接着就先开始了一场普通的选举。 在集群leader的选举期间,全体群众均可参加选举。 这时,全体群众的角色就变成了候选人(candidate),通过民主投票选出leader。 之后,领导人的任期开始,然后选举结束。 除leader外,所有candidate都变回了群众的角色,服从leader的领导。
Paxos令人难以理解的地方在于安全性的保障。 Lamport在论文中指出“我们要求不同的提案(proposal)有不同的编号”。 然而,这个对于理解安全性来说重要的概念在接下来的论文中并没有得到清晰的解释。 Raft算法提出了Term的概念来解决这个问题。 Raft算法的核心概念与现实民主制度非常吻合,因此很容易理解。

2.2 raft更容易实现

对paxos的描述侧重于理论。 根据 Google 的chubby论文,“Paxos 算法的描述与现实世界系统的需求之间存在显着差距……最终的系统将基于未经验证的协议。” paxos中的原论文并没有给出提案编号和日志复制的具体实现方法。 如果不考虑小细节,整个协议的一致性就会崩溃。 而且,对于发现和纠正错误的实现细节,也没有详细的现成参考资料。 综上所述,需要对paxos协议有深刻的理解才能在实现出相应的一致性应用。 在博士论文《BRIDGING THEORY AND PRACTICE of the Raft protocol》中,作者则通过案例具体展示出了如何使用 raft 协议构建一致的状态机应用。

 

 

0条评论
0 / 1000
杨亮
7文章数
0粉丝数
杨亮
7 文章 | 0 粉丝
原创

Raft算法的优势总结

2023-07-11 10:08:21
17
0

1. Paxos和Raft算法简介

1.1 Paxos算法简介

Paxos算法(Lamport 2001)是Lesile Lamport提出的一种基于消息传递、高容错的共识算法。 分布式系统中的节点通信有两种模型:共享内存和消息传递。 基于消息传递通信模型的分布式系统不可避免地会遇到进程减慢和杀掉、消息延迟、丢失、重复等问题。 Paxos算法是一种在存在上述异常的情况下仍能保持一致性的协议。Paxos算法用一个希腊故事来描述。 在Paxos中,共有三种角色,分别是Proposer(用于发布提案提案)、Acceptor(可以接受或拒绝提案)、Learner(研究选中的提案,当提案被超过一半的Acceptor接受时)。 下面是Paxos想要解决的问题的更精确的定义:1. 决议(值)只有在提案者提出后才能被批准 2. 在 Paxos 算法的一个执行实例中,只有一个值被批准(选择) 3. 学习者只能得到选择的值

所有食物请求必须由全局唯一的服务器协调和处理。 这样的服务器称为领导者服务器,其余的其他服务器成为跟随者服务器。 Leader 服务器负责将客户端事务请求转换为事务提案并将提案分发给集群中的所有 follower 服务器。 之后,Leader服务器需要等待所有Follower服务器的反馈。 一旦超过一半的follower服务器给出了正确的反馈,leader就会再次向所有follower服务器分发commit消息,要求其提交之前的提案。

 

1.2 Raft算法简介

Raft(Ongaro and Ousterhout,2014)实现了与 Paxos 相同的功能,将分布式一致性分解为多个子问题: 领导者选举、日志复制、安全、日志、成员资格变更 成员资格变更。Raft 将系统中的角色分为领导者leader、追随者和候选人:

Leader:接受客户端请求,并将日志请求同步给Follower。 当日志同步到大部分节点后,它会告诉Follower提交日志。
Follower:接受并持久化Leader同步的日志,并在Leader通知可以提交日志后提交日志。
Candidate:领导者选举过程中的临时角色。
Raft要求系统任何时候最多有一个Leader,一个普通的选举过程中只有Leader和Followers。

2. Raft的优势总结

2.1 raft更容易理解

对于学习者来说,Raft 更容易理解,因为 Raft 将算法中使用的各种元素和过程描述为民主社会中的选举。领导人(leader)由民众投票选举产生。 在Raft算法的开始,没有leader,集群中的所有参与者都是群众。 接着就先开始了一场普通的选举。 在集群leader的选举期间,全体群众均可参加选举。 这时,全体群众的角色就变成了候选人(candidate),通过民主投票选出leader。 之后,领导人的任期开始,然后选举结束。 除leader外,所有candidate都变回了群众的角色,服从leader的领导。
Paxos令人难以理解的地方在于安全性的保障。 Lamport在论文中指出“我们要求不同的提案(proposal)有不同的编号”。 然而,这个对于理解安全性来说重要的概念在接下来的论文中并没有得到清晰的解释。 Raft算法提出了Term的概念来解决这个问题。 Raft算法的核心概念与现实民主制度非常吻合,因此很容易理解。

2.2 raft更容易实现

对paxos的描述侧重于理论。 根据 Google 的chubby论文,“Paxos 算法的描述与现实世界系统的需求之间存在显着差距……最终的系统将基于未经验证的协议。” paxos中的原论文并没有给出提案编号和日志复制的具体实现方法。 如果不考虑小细节,整个协议的一致性就会崩溃。 而且,对于发现和纠正错误的实现细节,也没有详细的现成参考资料。 综上所述,需要对paxos协议有深刻的理解才能在实现出相应的一致性应用。 在博士论文《BRIDGING THEORY AND PRACTICE of the Raft protocol》中,作者则通过案例具体展示出了如何使用 raft 协议构建一致的状态机应用。

 

 

文章来自个人专栏
云原生学习笔记
7 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0