Paxos与Raft 拜占庭问题

分布式系统–拜占庭将军问题(The Byzantine Generals Problem) 分布式系统–拜占庭将军问题,以拜占庭问题作为学习分布式学习的第一篇,初步了解分布式系统可能存在的问题,进而在学习后面的算法的时候有个概念 阅读详情

Raft - 动画演示 Raft

Paxos

Paxos问题指分布式系统中存在故障fault,但不存在恶意corrupt节点场景(消息可能丢失但不会造假)下的共识达成(Consensus)问题。

注:对于corrupt情形是拜占庭问题

拜占庭故障

这个问题是在1982年由Lamport, Shostak, Pease 提出 ——The problem of reaching a consensus among distributed units if some of them give misleading answers. (在分布式单元中的其中几个成员给出错误讯息的条件下,使分布式单元达到一致的难题。)The original problem(原始问题是关于几个将军策划政变。其中有些将军撒谎说可以支持一个具体的计划,或者支持其他将军告诉他们的话。) concerns generals plotting a coup. Some generals lie about whether they will support a particular plan and what other generals told them. What percentage of liars can a decision making algorithm tolerate and still correctly determine a consensus? (一个决策算法可以容忍多少百分比的骗子,然后仍然能够正确确定共识?)

最后结论是:既要想容忍t个判国者,必须保证总的将军的个数大于3t。(数学难题)

[转]拜占庭故障 & Paxos 算法 - CharyGao - 博客园

Paxos是第一个被证明的共识算法,原理基于两阶段提交并进行扩展。算法中将节点分为三种类型:

  • 倡议者proposer:提交一个提案,等待大家批准为结案,往往是客户端担任。
  • 接受者acceptor:负责对提案进行投票,往往服务器担任。提议超过半数的接受者投票及被选中。
  • 学习者learner:被告知提案结果,并与之统一,不参与投票过程。客户端和服务端都可担任。

每个节点在协议中可以担任多个角色。

Paxos的特点:

  • 一个或多个节点可以提出提议
  • 系统针对所有提案中的某个提案必须达成一致
  • 最多只能对一个确定的提案达成一致
  • 只要超过半数的节点存活且可互相通信,整个系统一定能达成一致状态

两个阶段分别是准备(prepare)和提交(commit)。准备阶段解决大家对哪个提案进行投票的问题,提交阶段解决确认最终值的问题。

简单来说,提案者发出提案后,收到一些反馈,有两种结果,一种结果是自己的提案被大多数节点接受了,另外一种是没被接受,没被接受就过会再试试。
提案者收到来自大多数的接受反馈,也不能认为这就是最终确认。因为这些接收者并不知道自己刚反馈的提案就是全局的绝对大多数。
所以,引入新的一轮再确认阶段是必须的,提案者在判断这个提案可能被大多数接受的情况下,发起一轮新的确认提案。这就进入了提交阶段。
提交阶段的提案发送出去,其他阶段进行提案值比较,返回最大的,所以提案者收到返回消息不带新的提案,说明锁定成功,如果有新的提案内容,进行提案值最大比较,然后替换更大的值。如果没有收到足够多的回复,则需要再次发出请求。

一旦多数接受了共同的提案值,则形成决议,称为最终确认的提案。

Raft算法是Paxos算法的一种简化实现。

Raft is a protocol for implementing distribution consensus.

包括三种角色:leader,candidate和follower。

  • follow:所有节点都以follower的状态开始,如果没有收到leader消息则会变成candidate状态。
  • candidate:会向其他节点拉选票,如果得到大部分的票则成为leader,这个过程是Leader选举。
  • leader:所有对系统的修改都会先经过leader。

其有两个基本过程:

  • Leader选举:每个candidate随机经过一定时间都会提出选举方案,最近阶段中的票最多者被选为leader。
  • 同步log:leader会找到系统中log(各种事件的发生记录)最新的记录,并强制所有的follow来刷新到这个记录。(Log replication  ----   Each change request to leader, and each change is added as an entry in the node's log. The log entry is current unsubmitted, so it won't update the node's value.  To commit the entry, the node first replicates the log entry to the follower nodes. The the leader waits until a marjority of followers have written the entry.  The entry is commited in the leader node. Then the leader notifies the followers that the entry is committed.  The cluster has now come to consensus about the system state.)
  • Raft一致性算法是通过选出一个leader来简化日志副本的管理,例如,,日志项(log entry)只允许从leader流向follower。

下面是动画演示Raft,清晰理解Raft共识如何达成。

Log replcation process: 

(1) First  client sends a change to leader

(2) The change is appended to the leader's log

(3) The change is sent to the followers on the next heatbeat 

(4) The change is committed once the leader receives majority of acknowldeges from follwers, and send a response to the client at the same time

(5)

Raft

Raft算法 最近在看raft算法,学习之余写篇文章将自己的一些理解记录下来,供大家参考。 一.前言 分布式系统的诞生,解决了许多企业应用的问题,但也有许多新的问题随之而来,多个服务之间如何保持数据一致性的问题便是其中之一,问题的产生总会有解决办法,经典的Paxos算法就是解决这一问题的,但由于Paxos算法太过复杂,实现起来也有难度,所以实际运用的系统比较少;斯坦福大学提出的Raft算法,性能和Paxos算法差不多,但Raft算法比Paxos算法更容易理解和实现,因此应用示例也也更多。 二.说明 ... 阅读详情

相关推荐

11、拜占庭故障及其处理

本文深入探讨了拜占庭故障及其在分布式系统中的处理方法,包括冗余掩盖和诊断与重新配置两种主要的容错设计方法。同时提出了一种基于时间线的诊断算法,并结合成员协议和隐式确认算法进一步提升系统的错误处理能力。文章还通过航空航天领域的详细案例分析展示了这些技术的实际应用,并讨论了未来的发展方向,如智能化诊断和动态冗余管理。

mongodb5scout的博客 134

拜占庭故障

1、拜占庭故障具体是什么分类呢? 2、拜占庭故障出现在哪里?出现在硬件中,还是软件中,出现在操作系统中吗? 比如,拜占庭故障会不会出现在云计算中。博客一:拜占庭故障(zz) 这个问题是在1982年由Lamport, Shostak, Pease 提出 ——The problem of reaching a consensus among distributed units if some of

社会你鑫哥的博客 5867

eNSP-交换机VLAN配置

VLAN

乌托托的博客 8803

分布式系统概念 | 一致性协议:拜占庭将军问题、Paxos、Raft

文章目录拜占庭将军问题Paxos问题描述执行过程Prepare阶段Accept阶段Learner获取提案活锁问题Raft状态机执行流程主节点选举数据同步 拜占庭将军问题 拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了达到防御目的,每个军队都分隔很远,将军与将军之间只能靠信差传消息。在战争的时候,拜占庭军队内所有将军和副官必须达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,叛徒可以任意行动以达到以下目标:欺骗某些

凌桓丶的博客 2939

P450酶催化循环的Amber-Gromacs混合模拟实战:从血红素加氧到产物释放

本文详细介绍了针对P450酶完整催化循环的Amber-Gromacs混合模拟实战策略。通过Amber为关键氧合血红素中间体(CPDI)构建精确力场,再利用Gromacs的高效GPU加速进行长时间尺度动力学模拟,完整覆盖从底物结合到产物释放的催化过程,为研究酶催化机制提供了强大的计算工具。

weixin_29201859的博客 313

Win11用户文件夹中文名修改全攻略

本文详细介绍了Windows 11系统中修改中文用户文件夹名称的完整步骤。操作包含七个关键环节:前期数据备份、账户名称修改、管理员账户激活、用户文件夹重命名、注册表路径更新、收尾操作及注意事项。特别强调需要同步修改账户名、文件夹名和注册表关联路径,并建议操作前备份重要数据。文中还针对常见问题提供了解决方案,如软件报错时的符号链接创建方法。整个过程需谨慎操作,建议在管理员权限下逐步执行,修改完成后需验证系统及软件功能是否正常。

Qinti_mm的博客 3120

了解区块链的基本(第一部分):拜占庭容错(Byzantine Fault Tolerance)

区块链本质上是去中心化的系统,由不同的成员计算机组成,这些成员的行为取决于它们的动机和它们可以获得的信息。 每当一个新的交易被广播到网络中时,节点就可以选择将该交易包含在它们的帐簿副本中,或者忽略它。当组成网络的大多数成员统一意见时,达到了共识。 分布式计算和多代理系统中的一个基本问题是,在存在许多出错的进程的情况下,实现整个系统的可靠性...

weixin_34208283的博客 691

cuRobo 入门教程(一)基于CUDA的机器人运动规划加速库

cuRobo是一款基于CUDA加速的机器人算法库,提供运动学计算、碰撞检测、轨迹优化等功能。该库采用并行优化技术,在GPU上实现高效运算,比现有方案快60倍。cuRobo支持多种机器人模型和环境表示,包含正向/逆向运动学、无碰撞轨迹生成、模型预测控制等核心算法,并可与IsaacSim等仿真平台集成。其特点包括:1) 支持多种碰撞检测方式(长方体/网格/深度图像);2) 提供批量环境处理和实时世界更新;3) 通过CUDA Graphs加速优化迭代;4) 在Jetson Orin等平台实现毫秒级运动规划。安装支

2506_90492529的博客 1924

ElasticSearch学习篇7_拜占庭将军问题与分布式一致性算法(Raft、Paxos)理解

拜占庭将军问题提供了对分布式共识问题的一种情景化描述,为理解和分类现有众多分布式一致性协议和算法提供了框架,现有的分布式一致性算法主要分为两类一类是故障容错算法:即非拜占庭算法,解决的是分布式系统存在故障但是不存在被恶意攻击的场景下的共识问题,主要针对消息丢失、重复等问题,面对消息被篡改就无力了,一般用于局域网场景下的分布式算法,如Paxos、Raft、ZAB协议等。一类是拜占庭算法:既可以解决分布式系统故障,又可解决恶意攻击的问题,如在数字货币的区块链技术中,属于此类算法有PBFT、PoW算法。

xiaosi的博客 1487

【WRFDA输入数据】全球高空观测气象数据(LITTLE_R 格式数据)

【WRFDA输入数据】全球高空观测气象数据(LITTLE_R 格式数据)

WW、forever的博客 475

运动想象 (MI) 分类学习系列 (19) : EEG-TransNet

本文提出了一种基于注意力机制的卷积神经网络(EEG-TransNet),用于运动想象脑电图(MI-EEG)解码。该方法创新性地通过平均池化和方差池化提取多模态时间信息,并结合自注意力模块捕获长期依赖关系。消融实验表明,方差池化比最大池化更有效(p<0.05),且注意力模块和卷积编码器对特征判别性至关重要。可视化分析验证了该方法能学习到更具判别性的紧凑特征。该工作为MI-EEG解码提供了新的多尺度时间信息融合视角,代码已开源。

走在深度学习前沿的小宋 358

概览分布式一致性协议和算法 2PC 3PC 拜占庭问题 Paxos ZAB Raft

概览分布式一致性协议和算法 2PC 3PC 拜占庭将军问题 Paxos ZAB Raft 拜占庭将军问题 byzantine https://www.jianshu.com/p/8bcef0ca676c 拜占庭问题,假设节点总数是N,叛徒节点数为F。如果需要达成一致性的认识,则当 N 》= 3F+1 时,问题才有解,共识才能达成,这就是Byzantine Fault Tolerant(BFT)...

HanseyLee 769

AIGC算法工程师 面试八股文

1、简述DDPM的算法原理 2、什么是重参数化技巧?Diffusion Models和VAE中的重参数化技巧是如何使用的? VAE中的重参数化技巧 Diffusion Models中的重参数化技巧 3、什么是马尔可夫过程?DDPM中的马尔可夫链是如何定义的? 马尔可夫过程 DDPM马尔可夫链 4、为什么DDPM前向过程中前期加噪少,后期加噪多? 5、VAE和Diffusion Models中的变分推断是什么? 6、Negative Prompt实现的原理是什么?

沉迷单车的追风少年 1万+

【区块链技术(06)】为什么分布式系统会存在数据一致性问题?本文带你理解:CAP和FLP定理、拜占庭将军问题;Paxos和Raft两种分布式算法

在分布式环境中,由于各个节点之间的通信存在延迟和不确定性,如何保证数据的一致性称为一个挑战 一致性是指分布式系统中所有节点对于某个操作或数据状态达成的共识。 当多个节点参与某个操作时,它们需要遵循一定的规则来保证数据的一致性

拔高、提升、创新! 813

手把手教你学SIMULINK模块库文件专栏-From Workspace 模块详解

模块是 Simulink 中的一个信号源模块,用于从 MATLAB 工作区加载数据作为输入信号。该模块允许用户将预先在 MATLAB 中生成的数据(如时间序列、矩阵或结构体)导入到 Simulink 模型中,从而实现更灵活的信号输入和仿真控制。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常灵活的工具,适用于需要从 MATLAB 工作区加载数据的各种场景。

MHD0815的博客 631

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

分布式系统基础概念:一致性,共识算法,FLP不可能性原理,CAP原理,ACID原则,Paxos与Raft,拜占庭将军问题

区块链首先是一个分布式系统,中央式结构改成分布式系统,碰到的第一个问题就是一致性的保障。很显然,如果一个分布式集群无法保证处理结果一致的话,那任何建立于其上的业务系统都无法正常工作。 一致性问题 在分布式系统中,一致性是指:对于系统中的多个服务节点,给定一系列操作,在协议(往往通过某种共识算法)保障下,试图使得他们对处理结果达成某种程度的一致。 注意:一致性并不代表结果正确与否,而是系统对外...

charles_lun专栏 3556

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【分布式技术】分布式共识算法Paxos

共识算法(Consensus Algorithm)是分布式系统中用于确保多个参与者能够就单一数据值达成一致的一类算法。在分布式系统中,多个节点需要协同工作以完成任务,而这些节点之间可能存在网络延迟、节点故障等问题。共识算法的目标就是在这样的环境中,确保所有诚实的节点能够就某项决策达成一致,即使某些节点可能表现出故障或恶意行为。共识算法是分布式系统中至关重要的组成部分,它们确保了在不可靠的网络环境中,多个节点能够就某一决策达成一致。

wendao76的专栏 2388

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

综述:PBFT, Paxos, RAFT

综述:PBFT, Paxos, RAFTPBFTRaftPaxos总结 PBFT 共识算法的集群中有很多节点,它们都可以处理客户发来的请求,但是客户发送请求的顺序对于最终的结果存在很大的影响。因此,为了统一这个结果的顺序,PBFT采取选举一个leader的做法。而这个Leader是随机产生的。 基于拜占庭将军问题,一致性的确保主要分为这三个阶段:预准备(pre-prepare)、准备(prepare)和确认(commit)。流程如下图所示: 其中C为发送请求端,0123为服务端,3为宕机的服务端,具体步骤如

安徽思远的博客 829

拜占庭将军问题

漫画:什么是拜占庭将军问题? 转载自:程序员小灰 什么是拜占庭将军问题? 在很久很久以前,拜占庭是东罗马帝国的首都。那个时候罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信使传递消息。 在打仗的时候,拜占庭军队内所有将军必需达成一致的共识,才能更好地赢得胜利。但是,在军队内有可能存有叛徒,扰乱将军们的决定。 这时候,在已知有成员不可靠的情况下,其余忠诚的将军需要在不受叛徒或间谍的影响下达成一致的协议。 莱斯利·兰伯特(Leslie...

wang_nian的博客 318

分布式与一致性协议之拜占庭将军问题(三)

CFT算法解决的是分布式系统中存在故障,但不存在恶意节点的场景下的共识问题。也就是说,这个场景可能会丢失消息或者有消息重复,但不存在错误消息或者伪造消息的情况,常见的CFT算法有Paxos算法、Raft算法、ZAB协议。需要注意的是,拜占庭将军问题描述的是最困难,也是最复杂的一种分布式故障场景,该场景除了存在故障行为,还存在恶意行为。在存在恶意行为的场景中(比如在数字货币的区块链技术中),我们必须使用拜占庭容错算法还有PBFT算法、POW算法。反之则推荐使用拜占庭容错算法,例如区块链中使用Pow算法。

Cover_sky的博客 3061

paxos算法_学习分布式共识算法

如果你从事服务端开发,在互联网规模越来越大的今天,你或多或少会接触一些“分布式”相关的东西,而共识算法作为分布式系统的基石,却不是那么容易理解和实现的。paxos 论文晦涩难懂,raft 在具体实现上也有很多细节值得考究。本文收集了一些关于分布式共识算法的资料,中英文都有,愿你 from zero to hero。“一致性”这个词已经越来越被滥用了,你经常可以在各种博客看到把 paxos 写做是一...

weixin_39554775的博客 291

什么是拜占庭将军问题

假设总共有N个将军,每个将军发送自己的意见给其他将军,然后将军们根据收到的意见进行投票,如果有超过N/2个将军投票一致,则采取投票的结果。这个方案的前提是假设叛徒的数量不超过总将军数的一半,因为如果超过一半的将军都是叛徒,则无法保证多数投票的结果是正确的。拜占庭帝国的一支军队要攻打一个城市,攻打的成功需要不同将军协同决策,但是有些将军是不忠诚的,他们可能会发送虚假信息或者故意阻碍其他将军的决策。问题是如何让忠诚的将军在不知道其他将军是否忠诚的情况下做出正确的决策。

weixin_51291483的博客 275

PDFT/Paxos/Raft-分布式一致性协议解析

分布式系统中有个著名的原则CAP原则,C为Consistency(一致性)、A为Availability(可用性)、P为Partition tolerance(分区容错性)。这里主要介绍下分布式环境下如果达到一致性。 说到一致性不得不说下经典的拜占庭问题。 拜占庭问题 话说一组拜占庭将军分别各率领一支军队共同围困一座城市。为了简化问题,将各支军队的行动策略限定为进攻或撤离两种。因为部分军队进攻部分...

微信搜:import_bigdata,大数据领域硬核原创作者 633

拜占庭将军问题和 Raft 共识算法讲解

导读 在分布式系统中, 什么是拜占庭将军问题?产生的场景和解决方案是什么?什么是 Raft 共识算法?Raft 算法是如何解决拜占庭将军问题的?其核心原理和算法逻辑是什么?除了 Raft,还有哪些共识算法?共识问题作为分布式系统的一大难点和痛点,本文主要介绍了其产生的背景、原因,以及通用的 Raft 算法解决方案。01拜占庭将军问题在今年的敏捷团队建设中,我通过Suite执行器实现了一...

架构师小秘圈 373

区块链-拜占庭将军问题介绍

拜占庭将军问题: 有一个防御性很强的城邦,只有两个进攻时间,4点、9点 五位将军围城,需超过半数的将军同时进攻,才能攻破 可能有叛军,将军们只能通过信使传递信息 信使可能被截,也可能为叛军传播错误信息 类似双重支付问题 假设一:多数是好人(比例以后会提及),如果超过一半是叛军,结果只能失败 假设二:原计划四点进攻(缺省值),如果所有信使都被截,无法...

MansonRi 842
上一篇: 通过服务名称 远程调用服务
下一篇: CAP理论 一致性哈希算法
令羽飞飞
博客等级 码龄14年 42粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值