当前位置: 首页 > news >正文

云计算-Raft算法报告-raft与paxos对比

Raft算法报告

摘要

最初,在分布式系统领域中,Paxos算法虽然是作为主体的,但是其复杂性太大并且难以理解,而且它在实际系统中需要大量的扩展。Raft算法的出现,提高了可理解性,在状态简化与算法方面减小了复杂性。相比于Paxos,Raft就实现了可理解性的更高,更容易的学习,而且还提供一个足够好的用来构建一个现实系统的基础适合实际系统的实现

1、介绍

在分布式系统领域,共识算法是保证数据一致性与可靠性的核心技术,Raft 算法是其中的代表。Raft算法将一致性问题分成领导者选举、日志复制、安全性等模块,并通过状态简化降低系统复杂度。以下从复制状态机的思想、状态简化,以及Raft共识算法展开,深入了解 Raft的一致性管理。

2、复制状态机

复制状态机的就是相同的初始状态下,输入相同命令,得到的结束状态也会是相同的。

复制状态机的具体工作原理就是依赖Leader顺序日志,保证所有节点日志一致性后提交,状态机结果一致。简单来说就是leader接收到客户端发送命令leader生成日志 发送给所有其他的follower 然后其他follower收到日志后,将其进行持久化处理,添加到自己的日志中并向Leader确认,在Leader收到多数确认后,follower会将其应用到本地状态机中在正常情况下,客户端无论查询哪一个节点的状态机它查到的结果是一样的

Paxos与之不同的是,它是不强制依赖Leader的,但是需要额外的机制比如Multi-Paxos等来实现顺序日志,复杂度更高。

3、状态简化

状态简化就是在一致性的条件下,通刻意过减少系统状态的复杂性,降低理解和实现难度。其本质就是在分布式系统中,通过约束行为来实现raft一定程度上对抗分布式复杂性

状态简化主要体现在三个方面:第一是限定状态数量,所有节点都只能是LeaderFollowerCandidate这三个状态之一,这个特点让角色的行为变得可预测,并且与Paxos相比,Raft只用考虑状态的转化,不要考虑状态之间的共存影响以及角色重叠带来的复杂性;第二是强制日志连续,要求日志必须连续,不允许出现空洞,这样带来的好处就是冲突时可以直接覆盖不一致的部分,Paxos不同的是它允许出现空洞,但需要处理和合并多版本的问题;第三就是式事件触发状态转换所有的状态转化都是由显示事件也就是明确的时间来触发的,不是由隐式事件判断的,但在Paxos中是隐式协调,是依赖天编号和多数派响应。

4、Raft共识算法

4.1、领导者选举

Raft中使用心跳机制来维持权威Leader每经过一段固定时间,就会向所有Follower发送心跳信息来确立自己的地位。

初始是时,每个节点只能处于Follower状态;若某个Follower检测到集群中没有Leader此时就会触发选举流程。此时,该Follower首先会递增自己的当前任期号将自己的任期号加一将自身状态转为Candidate,并同时向其他节点发起请求投票RPC调用,来竞争成为新的Leader

出现三种选举结果:如果某个节点赢得多数选票并且选票超过半数那么它会转化为 Leader,然后再向所有 Follower 发送心跳消息以确认领导权并终止选举;如果当前节点收到新 Leader 的心跳信息且验证其任期号有效后,那么就说明有其他节点胜出,当前节点就会从 Candidate 状态降级转化Follower;如果选举出现平票或无人获得半数以上支持,则本轮选举无结果结束,系统会很快开启新一轮投票,进入更高的任期号重新尝试选出 Leader。

在Paxos中,是没有Leader概念的,Multi-Paxos需要自行实现选举,容易出现冲突提案。

4.2日志复制

日志复制的机制就是,将客户端的命令请求以日志条目的形式,从Leader节点传递到集群的其他节点的过程,其核心就是保证所有节点的操作日志完全相同。Follower验证日志一致性后,将日志进行持久化处理并回复确认。Leader收到多数的ACK后,应用日志条目应用到状态机并标记为已提交,然后再通知Follower提交日志,最终使得所有结点的状态一致。

在Follower不发生任何状况,一切正常的情况下,就可以保证所有节点的日志完整且正确否则,Leader就会一直重复发起附加条目RPCs,直到所有的Follwer都复制并存储了日志条目。

在Raft算法中已提交的日志条目都拥有持久化、所有状态机可执行的特点。Leader成功将日志条目复制到多数节点后,该条目即被视为已提交

4.3安全性

在Leader选举和日志复制中的机制不能保证每个状态机都正常正确执行命令这是因为许多共识算法为了降低复杂性会出现非Leader就收乱序复制来的日志的情况这就造成了空洞的大量出现。Raft通过设计选举限制和提交规则,来保证在任何异常情况下也都能够保持一致性、顺序性。

4.3.1选举限制

选举限制的核心规则是新当选的Leader必须包含所有已提交的日志条目。Raft通过投票否决机制来决定一个Candidate是否赢得选举。Candidate会向其他服务器节点发送投票请求RPC,节点收到投票请求后,会对比Candidate的日志新旧程度,如果Candidate的日志不如自己新,则拒绝投票。相比之下,Paxos是没有明确限制的,需自行设计日志完整性校验。

4.3.2提交规则

提交规则所要解决的核心问题是在分布式系统中,当旧任期的日志条目已被复制到多数节点但未提交时,新Leader可能覆盖这些条目,导致数据间的错误

leader仅能通过Quorum原则提交自己任期内的日志条目。当前任日志提交后,根据日志匹配特性,旧日志被自动是为已提交,即被间接提交。但在Paxos中是依赖多数派提交确认。

http://www.lryc.cn/news/571233.html

相关文章:

  • 【MySQL基础】表的功能实现:增删查改详细讲解
  • 第十七届山东省职业院校技能大赛中职组网络建设与运维赛项
  • php在线生成pdf选民证系统支持中文(小工具)
  • 【前端基础】摩天之建的艺术:html(下)
  • 数据库的查询
  • 游戏技能编辑器开发完全指南系统架构设计之技能编辑器整体架构
  • RISC-V向量扩展与GPU协处理:开源加速器设计新范式——对比NVDLA与香山架构的指令集融合方案
  • 【开源工具】Windows屏幕控制大师:息屏+亮度调节+快捷键一体化解决方案
  • 数字化零售如何全面优化顾客体验
  • 【SpringBoot】Spring Boot实现SSE实时推送实战
  • TDMQ CKafka 版事务:分布式环境下的消息一致性保障
  • 工业视觉应用开发教程(一)
  • KingbaseES在线体验平台:开启国产数据库学习新征程
  • Mybatis(XML映射文件、动态SQL)
  • 有趣的git
  • 机器学习项目微服务离线移植
  • 洪水风险图制作全流程:HEC-RAS 与 ArcGIS 的耦合应用
  • Rocky Linux 9 系统初始化与安全加固脚本
  • MySQL的Sql优化经验总结
  • 大模型知识库RAG框架,比如LangChain、ChatChat、FastGPT等等,哪个效果比较好
  • 执行 PGPT_PROFILES=ollama make run下面报错,
  • HTML知识全解析:从入门到精通的前端指南(上)
  • (OSGB转3DTiles强大工具)ModelSer--强大的实景三维数据分布式管理平台
  • 内测分发平台应用的异地容灾和负载均衡处理和实现思路?
  • 【前端基础】摩天之建的艺术:html(上)
  • 点云提取车道线 识别车道线
  • Rust 学习笔记:关于 OOP 和 trait 对象的练习题
  • 基于CNN的FashionMNIST数据集识别6——DenseNet模型
  • KingbaseES在线体验平台深度测评:基于MCP接口管理的Oracle风格SQL实战
  • 不同建模方式的介绍 RTL建模笔记(1)