首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >分布式一致性算法 Raft

分布式一致性算法 Raft

作者头像
dys
发布于 2018-04-03 08:57:23
发布于 2018-04-03 08:57:23
7900
举报
文章被收录于专栏:性能与架构性能与架构

分布式一致性算法最著名的应该是 Paxos,1990年提出,google的Chubby Lock服务就是使用的Paxos 之后的一些一致性算法基本都是在Paxos思路上的调整,例如 ZooKeeper的 ZAB 但Paxos算法一直被认为比较繁杂,很不好理解,大家对其调整优化,就是因为他的复杂 2013年,斯坦福的两个人以易懂为目标,设计了一致性算法 Raft,现在已经被广泛应用,比较有名的是etcd,Google的Kubernetes就使用了etcd作为他的服务发现框架

什么是分布式一致?

在单节点环境中,client向node发送一个值,很容易就达成一致了

但当我们有多个node时,我们应该如何做,才能实现一致性呢?

这就是分布式一致性问题,Raft就是用来解决此问题的

Raft的思路

每个node都会处于以下3个状态之一: (1)Follower 跟随者 (2)Candidate 候选人 (3)Leader 领导人

所有node开始时都是follower

当follower没有收到leader的心跳时,他就会申请成为candidate,然后向其他node发送请求,说“我要成为Leader,请给我投票”

当candidate收到大多数node的同意后,就变为了Leader,以后对于系统的修改操作,都必须经过Leader

例如client要发送消息,会先发给leader,leader会把这个操作记录到自己的日志 注意,是记录到日志,并没有实际修改node中的值

leader把这条操作记录发送给各个follower,follower收到后,也保存到自己的日志中

follower收到操作记录后,向leader发送消息,说自己安排好了 leader收到大多数的回馈后,就把这条记录进行提交,真正修改了node中的值

leader执行提交以后,就通知各个follower,“我已经提交了,你们可以更新了”

现在,系统就达成了一致的状态 这个过程叫做 Log Replication 日志复制,是Raft的核心之一,还有选举leader过程也是核心,就不细说了 如果对Raft算法有兴趣,强烈建议看一下他的动态演示 地址 http://thesecretlivesofdata.com/raft/ 非常易懂,上面介绍的日志复制过程就是整理自这个演示,里面还有很多其他内容,看过后就会对Raft有了整体认识 还有Raft的详细说明文档,中文的,很好的资料,地址 https://github.com/maemual/raft-zh_cn/blob/master/raft-zh_cn.md

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分布式一致性协议 - Raft
学习raft之前,给大家推荐一个网站,这个网站动画描述raft运行过程。在看文章时对照该网站,可以帮助更好的理解raft。http://thesecretlivesofdata.com/raft/
并发笔记
2020/11/09
7710
分布式一致性协议 - Raft
一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR超详细解析
在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序,还有网络分区)等情况。
王知无-import_bigdata
2020/12/18
3.6K0
一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR超详细解析
实现分布式 kv—2 raft leader 选举
raft 是一个分布式一致性算法,主要保证的是在分布式系统中,各个节点的数据一致性。raft 算法比较复杂,因为它所解决的分布式一致性问题本来就是一个比较棘手的问题,raft 算法的实现主要可以拆解为三个部分:
roseduan
2021/12/27
4990
实现分布式 kv—2 raft leader 选举
Raft协议学习笔记
常见的一致性协议主要有:PaxOS、Raft、ZAB、PacificA等。同PaxOS,Raft也不考虑拜占庭将军问题(Byzantine failures,注:比特币采用工作量证明PoW和股权证明PoS解决了拜占庭将军问题)。
一见
2019/03/14
1.1K0
Raft协议学习笔记
分布式一致性协议的深度解析:Paxos与Raft
分布式系统的复杂性源于节点失效、网络分区、消息丢失等诸多不确定性。在这种背景下,分布式一致性问题应运而生,成为解决这些问题的核心。本文将从理论到实践,深入探讨两种经典的一致性协议:Paxos与Raft。文章适合有一定分布式系统开发经验的工程师,希望通过更系统的学习理解一致性协议的设计思想与实现细节。
摸五休二
2024/10/09
7250
分布式一致性算法-Paxos、Raft、ZAB、Gossip
2.当定时器时间到了而集群中仍然没有Leader,Follower将声明自己是Candidate并参与Leader选举,同时将消息发给其他节点来争取他们的投票,若其他节点长时间没有响应Candidate将重新发送选举信息
大数据真好玩
2020/06/12
2.7K0
raft一致性算法简单解释
在分布式环境中, 一致性是指数据在多个副本之间是否能够保持一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作之后, 应该能够保证系统的数据仍然处于一致的状态。
早起的鸟儿有虫吃
2019/05/10
1.2K0
raft一致性算法简单解释
看动画学会 Raft 算法
分布式系统中数据必然会存在于多台机器,一致性简单地说就是分布式系统中的各个部分保持数据一致
早起的鸟儿有虫吃
2021/07/22
7400
各大中间件底层技术-分布式一致性协议 Raft 详解
在一个技术团队内假设角色都是 均等的,会导致什么情况呢?产品提出一个需求,就可以随便去找团队中的任意一个人去发起需求。如果这个人因为请假走了,但是他没有把需求及时同步给团队其他人,因此会导致该需求存在很大的延迟。
Java_老男孩
2020/01/15
1.5K0
各大中间件底层技术-分布式一致性协议 Raft 详解
很短 | 图解 Raft 算法
想象一下,我们有一个单节点系统,且作为数据库服务器,然后存储了一个值(假设为X)。然后,有一个客户端往服务器发送了一个值(假设为8)。只要服务器接受到这个值即可,这个值在单节点上的一致性非常容易保证:
芋道源码
2019/05/22
1K0
详解分布式一致性机制
分布式中一致性是非常重要的,分为弱一致性和强一致性。现在主流的一致性协议一般都选择的是弱一致性的特殊版本:最终一致性。下面就从分布式系统的基本原则讲起,再整理一些遵循这些原则的协议或者机制,争取通俗易懂。但是要真正实施起来把这些协议落地,可不是一篇文章能说清楚的,有太多的细节,要自己去看论文呐(顺着维基百科找就行了)。
架构之家
2022/07/12
4800
详解分布式一致性机制
Raft 算法分析
官方定义: A Distributed Coordination Service for Distributed Applications。本质:基于内存的 KV 系统,以 path 为 key。
Yano_nankai
2021/01/26
7090
Raft 算法分析
分布式一致性协议之Raft
你可以想象下我们的一个节点作为一个保存单一值的数据库服务,我们有一个client可以向server发送一个值。client与server的关系如下图:
山行AI
2020/03/11
1.4K0
分布式一致性协议之Raft
分布式理论
随着计算机科学和互联网的发展,分布式场景变得越来越常见,能否处理好分布式场景下的问题,成为衡量一个工程师是否合格的标准。本文我们介绍下分布式系统相关的理论知识,这些理论是我们理解和处理分布式问题的基础。
一行舟
2022/08/25
4920
分布式理论
分布式环境Raft一致性共识算法解读
Raft是分布式环境下的一致性算法,它通过少数服从多数的选举来维持集群内数据的一致性。它与RBFT算法名称有点像,然而Raft算法里不能存在拜占庭节点,而RBFT则能容忍BFT节点的存在。Raft非常类似于paxos协议(参见我的这篇文章《paxos算法如何容错的–讲述五虎将的实践》),然而它比paxos协议好理解许多(因为paxos协议难以具体实现,所以zookeeper参考paxos实现了它自己的Zab算法)。同样,Raft有一个用GO语言实现的etcd服务,它的功能与Zookeeper相同,在容器操作系统CoreOS作为核心组件被使用。
陶辉
2019/06/21
1.1K0
分布式环境Raft一致性共识算法解读
分布式一致性机制整理
分布式中一致性是非常重要的,分为弱一致性和强一致性。现在主流的一致性协议一般都选择的是弱一致性的特殊版本:最终一致性。下面就从分布式系统的基本原则讲起,再整理一些遵循这些原则的协议或者机制,争取通俗易懂。但是要真正实施起来把这些协议落地,可不是一片文章能说清楚的,有太多的细节,要自己去看论文呐(顺着维基百科找就行了)。
用户1516716
2020/06/12
8070
分布式一致性机制整理
一文彻底搞懂Raft算法,看这篇就够了!!!
分布式系统通常由异步网络连接的多个节点构成,每个节点有独立的计算和存储,节点之间通过网络通信进行协作。分布式一致性指多个节点对某一变量的取值达成一致,一旦达成一致,则变量的本次取值即被确定。
码老思
2023/10/19
5.6K0
一文彻底搞懂Raft算法,看这篇就够了!!!
从Paxos到Raft,分布式一致性算法解析
导语 | 后台服务架构经过了集中式、SOA、微服务和服务网格四个阶段,目前互联网界大都使用微服务和服务网格。服务从集中式、中心化向分布式、去中心化不断演进,服务也变得更灵活,能够自动扩缩容、快速版本迭代等。但是分布式架构也将集中式下一些问题放大,比如通信故障、请求三态(成功、失败、超时)、节点故障等,这些问题会导致一系例数据不一致的问题,也是计算机领域的老大难问题。本文将与大家一起学习分布式一致性算法,因作者水平有限,若文中有不正处,还请多多指导。文章作者:董友康,腾讯PCG研发工程师。 一、CA
腾讯云开发者
2021/03/01
5460
一致性算法Raft 简易入门
当我们只有一个服务节点的情况下,是不存在节点共识的问题的,当存在多个不同服务节点时,才会引入分布式一致性的问题。
架构精进之路
2020/08/17
5140
一致性算法Raft 简易入门
理解分布式一致性Raft协议
在分布式系统中,分布式一致性是一个非常重要的概念,它是指分布式系统的各个服务器都保持一个统一的状态(数据)。但是在分布式系统中,通常由于网络,系统状态等原因会导致某些服务不可用或者不可靠。这就需要一种分布式一致性的协议来保证系统在某些服务失败的情况下仍然整体可用。
程序那些事
2020/07/08
4030
相关推荐
分布式一致性协议 - Raft
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档