`

Raft

 
阅读更多
Raft算法:最初是一个用于管理复制日志的共识算法,它是一个为真实世界应用建立的协议,主要注重协议的落地性和可理解性.

面向多个决策达成一致的问题,分解了Leader选举,日志复制和安全方面的考虑,并通过约束减少了不确定的状态空间

一个Raft集群通常包含5个服务器,允许系统有两个故障服务器.服务器处于leader,follower和candidate这三个状态之一.
Leader(领导者):仅有一个,决定日志的提交,日志只能Leader向Follower单向复制.处理所有的客户端请求,若服务端请求Follower则将该请求转发给Leader

Follower(跟随者):是被动的,不会对自身发出请求,只对leader和candidate的请求做出响应

Candidate(候选领导者):该状态用来选举Leader


共识过程:
1.首先选举一个Leader,接着赋予Leader完全的权力管理记账.
a.开始所有结点都是Follower,在随机超时发生后未收到来自Leader或Candidate消息,则转变角色为Candidate,提出选举请求.
b.最近选举阶段(Term)中得票超过一半者被选为Leader
c.如果未选出,随机超时后进入新的阶段重试.Leader负责从客户端接收log,并分发到其他节点

2.Leader从客户端接收记账请求.完成记账操作,生成区块并复制到其他记账节点.
a.Leader会找到系统中日志最新的记录,并强制所有的Follower来刷新到这个记录,数据的同步是单向的

3.Leader可能失效或与其他节点失去联系.这时,系统就会选出新的Leader

Leader选举:
1.任何一个服务器都可以成为candidate,它向其他服务器follower发送要求选举自己的请求
2.其它服务器发出OK后,只要有N/2+1的服务器同意,就可成为leader

记账过程
1.Leader已经选出,客户端发出增加日志的请求
2.Leader要求Follower遵从它的指令,都将这个新的日志追加到他们各自日志中
3.大多数Follower服务器将交易记录写入账本后,确认追加成功,发出确认成功信息
4.在下一个心跳(150-300ms)中,Leader会通知所有Follower更新确认的项目

分享到:
评论

相关推荐

    raft算法,英文原版论文

    raft算法,原版论文,英文版 摘要 Raft 是一种用来管理日志复制的一致性算法。它和 Paxos 的性能和功能是一样的,但是它和 Paxos 的结构不一样;这使得 Raft 更容易理解并且更易于建立实际的系统。为了提高理解性,...

    repo:princeton-vl/RAFT demos文件

    【标题】"princeton-vl/RAFT demos文件" 涉及的是一个开源项目,该项目主要关注计算机视觉领域中的光流估计技术。光流是图像序列中像素在时间和空间上的运动轨迹,它在视频处理、自动驾驶、虚拟现实等多个领域有着...

    Raft论文解析中文版

    "Raft论文解析中文版" 下面是Raft论文的详细解析: Raft共识算法 Raft是一种新的共识算法,旨在解决分布式一致性问题。它的设计目标是易于理解和正确实现的。Raft的核心思想是选举出一台机器作为Leader,然后让...

    Raft论文中文翻译版

    Paxos和Raft都是这样的共识算法,但它们的设计理念和实现方式有所不同。本文主要关注的是Raft算法,一个相对较新的共识协议,旨在解决Paxos的可理解性问题并提供额外的安全性与特性。 ### 1. Paxos简介 Paxos是由...

    Raft是一种共识算法,java 程序例子

    《深入理解Raft共识算法:基于Java实现的实例解析》 在分布式系统中,一致性是至关重要的,而Raft共识算法就是为了解决这一问题而诞生的。Raft是一种易于理解且可证明安全的分布式一致性算法,它由Ousterhout等人在...

    Raft - 基于共识的分布式数据库协同算法及其在 Neo4j 集群中的实现.pdf

    Raft分布式数据库协同算法在Neo4j集群中的实现 Raft是一种基于共识的分布式数据库协同算法,用于解决分布式系统中的Leader选举、日志复制、故障恢复等问题。Raft算法在Neo4j集群中的实现,使得Neo4j能够提供高可用...

    Raft一致性协义手写Demo

    ** Raft一致性协议详解 ** Raft 是一种分布式系统中用于保持集群节点间状态一致性的算法,由 Stanford University 的 Diego Ongaro 和 John Ousterhout 在 2013 年提出。它旨在简化 Paxos 算法,使其更易理解、实现...

    raft一致性算法英文原版论文

    Raft 是用来管理复制日志(replicated log)的一致性协议。它跟 multi-Paxos 作用相同,效率也相当,但是它的组织结构跟 Paxos 不同。这使得 Raft 比 Paxos 更容易理解并且更容易在工程实践中实现。为了使 Raft 协议...

    Raft 一致性算法论文译文

    ### Raft 一致性算法知识点详解 #### 一、引言 一致性算法是分布式计算领域中的关键技术之一,旨在确保分布式系统中的多个节点能够达成一致的状态,即使在某些节点出现故障的情况下亦能正常运行。传统的Paxos算法...

    Raft implementation for Java.zip

    《深入解析Java实现的Raft一致性算法》 在分布式系统领域,一致性算法是核心话题之一,其中Raft算法因其简洁性和易理解性受到广泛关注。本文将深入探讨Java环境下实现Raft算法的关键点,并通过分析"raft-java-...

    分布式系统的Raft算法.docx

    ### 分布式系统的Raft算法详解 #### 一、引言 在分布式系统领域,确保节点之间能够就某个状态达成一致是一项极其重要的任务。传统的Paxos算法虽然理论上完善,但在实际应用中却存在理解难度高、实现复杂等问题。...

    raft算法简单实现-java

    RAFT算法是一种分布式一致性协议,主要用于在集群中复制日志,确保数据的一致性。与PAXOS算法相比,RAFT算法以其简洁性和可理解性而受到欢迎。在JAVA中实现RAFT算法,可以为分布式系统提供可靠的领导者选举和状态机...

    基于Raft分布式一致性协议实现的局限及其对数据库的风险.docx

    《基于Raft分布式一致性协议实现的局限及其对数据库的风险》 分布式一致性协议在现代互联网行业中扮演着至关重要的角色,它们保证了在服务器集群中数据的一致性和高可用性。Raft协议,由Diego Ongaro在其博士论文中...

    苯乙烯的RAFT乳液聚合

    苯乙烯的RAFT乳液聚合技术是一种先进的聚合技术,具有以下几个关键知识点: 1. RAFT乳液聚合的定义与原理:RAFT(Reversible Addition-Fragmentation Chain Transfer,可逆加成-断裂链转移)聚合是一种活性自由基...

    raft分布式共识算法的Rust实现_rust_代码_下载

    **raft分布式共识算法** Raft 是一种为分布式系统设计的简单而可理解的共识算法,由 Ongaro 和 Ousterhout 在 2014 年提出的。它旨在成为 Paxos 算法的替代品,通过提供更清晰的设计和更易理解的逻辑,使得开发人员...

    图解分布式系统raft协议-完整版

    Raft协议是一种用于管理分布式系统中复制日志的共识算法,它设计上易于理解,且在实践中也非常可靠。Raft协议主要包含以下几个关键部分:Leader选举(Leader Election)、日志复制(Log Replication)、网络分区处理...

    Raft专用Mod启动器《RMLLauncher》

    用于加载steam游戏raft木筏求生mod启动器。 本启动器包含mod下载网站! 启动器官网在国外,正常下载会很缓慢,需要的自取。

    raft一致性算法中文版

    但是,从这些乱码中可以推断出,这些内容来自关于Raft一致性算法的文档。因此,尽管无法提供具体段落的内容解读,但可以提供Raft一致性算法的相关知识点。 Raft算法是一种用于实现分布式系统中各副本节点之间数据...

    raft一致性协议论文中文版

    Raft一致性协议是分布式系统设计领域的一项重要成果,它由Diego Ongaro和John Ousterhout提出,并且在设计时特别强调了易理解和实现的特性。Raft算法的目的在于提供一种比现有的Paxos算法更易于学习和实现的一致性...

    基于Raft协议的两节点主备系统调度算法.docx

    《基于Raft协议的两节点主备系统调度算法》 在现代工业系统,特别是城市轨道交通列车指挥调度系统中,为了保证服务的连续性和可靠性,通常会在指挥调度中心之外的各个运营现场设置服务节点。然而,为了降低成本,...

Global site tag (gtag.js) - Google Analytics