分布式协议Raft和Paxos详解

一、Raft是一种相对简化的分布式一致性算法,它由Diego Ongaro和John Ousterhout于2013年提出。与Paxos相比,Raft的设计目标是使一致性问题更易于理解、实现和部署。

Raft协议核心思想是将一致性问题分解为几个关键组件,包括领导者选举、日志复制和安全性。

  1. 领导者选举:Raft协议通过选举一个节点作为领导者来协调整个系统的操作。每个节点在初始状态下都是跟随者(Follower)。跟随者只负责接收来自领导者或候选者的指令,并进行相应的操作。如果跟随者在一段时间内没有接收到领导者的心跳信号,则会触发新的选举过程。选举过程中,节点会转变为候选者(Candidate),并向其他节点发送投票请求。如果候选者得到多数节点的支持,则成为新的领导者。

  2. 日志复制:一旦选出领导者,它就负责接收客户端的操作请求并将其转换为日志条目(Log Entries)。领导者将这些日志条目广播给其他节点,并要求它们复制这些条目以保持一致性。当大多数节点(大致上半数以上)确认复制成功后,领导者将该日志条目提交(Commit),并将结果应用于状态机。然后领导者通知其他节点该日志已经提交,其他节点也可以将其应用到状态机上。这样,整个系统就保持了数据的一致性。

  3. 安全性:Raft协议通过限制领导者的行为来确保安全性。领导者在向其他节点发送日志条目之前,必须等待大多数节点(包括自身)确认前一条日志已经复制成功。这样可以防止过期的领导者覆盖了新的日志条目。如果领导者失效,系统会触发新的选举过程,确保选出新的领导者。

总体而言,Raft算法的设计相对清晰,并且易于理解和实现。它提供了领导者选举、日志复制和安全性等基本机制,以实现分布式系统中的一致性。由于其简单性和可理解性,Raft被广泛用于构建可靠的分布式系统。

二、Paxos协议是一种分布式一致性协议,由Leslie Lamport于1990年提出。它被广泛应用于分布式系统中,用于解决在异步网络环境下的一致性问题。

Paxos协议的核心思想是通过多个阶段的消息传递和投票来达成一致。以下是Paxos协议的基本流程:

  1. 阶段一:准备(Prepare)

    • 提议者(Proposer)选择一个提案号(Proposal Number),并向多个接受者(Acceptor)发送准备请求。
    • 接受者收到准备请求后,如果收到的提案号大于等于之前的最高提案号,则接受者返回一个承诺(Promise),其中包含接受者之前接受的最高提案号及其对应的提案值。
    • 如果接受者已经接受了某个提案,则将该提案的提案号及其对应的提案值作为返回承诺的一部分。
  2. 阶段二:接受(Accept)

    • 如果提议者收到了大多数接受者返回的承诺,则提议者可以发送接受请求。
    • 接受请求中包含提议者选择的提案号以及根据收到的承诺确定的提案值。
    • 接受者收到接受请求后,如果接受者收到的提案号大于等于之前承诺的最高提案号,则接受请求,并返回一个接受回复(Accepted)。
    • 如果接受者接受了某个提案,则将接受回复中的提案号及其对应的提案值记为当前接受的提案。
  3. 阶段三:学习(Learn)

    • 当提议者收到大多数接受者返回的接受回复后,提议者知道自己的提案已经被大多数节点接受。
    • 提议者可以发送学习请求(Learn Request)来广播已经被接受的提案。
    • 接受者收到学习请求后,将保存该提案并告知其他节点。

Paxos协议通过阶段一和阶段二的消息传递和投票过程,保证了在异步网络环境下的一致性。协议要求提议者需要得到大多数接受者的确认才能继续推进,以确保系统的一致性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

概率论的学习和整理21:用EXCEL来做假设检验(未完成草稿)

目录 1 EXCEL可以用来做假设检验 1.1 如何打开 数据分析 和 规划求解 1.2 EXCEL里关于正态分布的准备知识 2 基本的假设检验 2.1 最基本的假设检验,单边的Z检验 2.1 双样本F检验 2.1.1 例题 2.1.2 进行F检验之前需要满足一些假设条件 2.1.3 计算步骤 2.1…

MySQL 数据抽稀 每分钟取一条

假如原始数据为每5秒一个数据,现在想展示为每4分钟一条数据,先按照分钟数把除以4余数为0的行选出来,在按照 年月日 时分,做组内排序(窗函数ROW_NUMBER),最后再拿出序号为1的行。 WITH data_01 …

spring学习笔记十

Spring使用注解Annotation定义Bean 1、UserDao接口和实现类 public interface UserDao {void save(); }Component("userDao") public class UserDaoImpl implements UserDao {public void save() {System.out.println("user dao save...");} }2、SpringC…

网工实操基础学习23.07.05

1.交换机,路由器 交换机的作用是链接同一个网络下的所有设备,如果有无线设备加入,需要添加AP(无线接入点)设备在交换机层次上 路由器的作用是将不同网络下的设备链接 2.IP地址 划分网段:网络位、网段、…

OpenCV SGBM 参数解释

param minDisparity 最小可能的视差值。 通常情况下,它为零,但有时。 校正算法可以移动图像,因此需要相应调整该参数。 。 param numDisparities 最大视差减去最小视差。 该值始终大于 。 零。 在当前的实现中,该参数必须能被 16…

大模型开发(十二):Function calling 流程优化并实现多轮对话任务

全文共1w余字,预计阅读时间约25~40分钟 | 满满干货(附代码案例),建议收藏! 本文目标:围绕Chat模型的Function calling功能进行更高层次的函数封装,并实现一个能够调用外部函数的多轮对话任务 写在前面:本文…

pytest中conftest的用法以及钩子基本使用

一、conftest是什么? conftest是pytest进阶中的高级应用,最近正好用到这一块儿,研究之后,向大家分享该高级应用。 二、使用步骤 1.conftest代码块 以全局性使用driver为主,只启动一次浏览器: pytest.fi…

华为数通HCIA-数通网络基础

基础概念 通信:两个实体之间进行信息交流 数据通信:网络设备之间进行的通信 计算机网络:实现网络设备之间进行数据通信的媒介 园区网络(企业网络)/私网/内网:用于实现园区内部互通,并且需要部…

WAF/Web应用安全(拦截恶意非法请求)

Web 应用防火墙(Web Application Firewall, WAF)通过对 HTTP(S) 请求进行检测,识别并阻断 SQL 注入、跨站脚本攻击、跨站请求伪造等攻击,保护 Web 服务安全稳定。 Web 安全是所有互联网应用必须具备的功能&#xff0c…

Python实现抽象工厂模式

抽象工厂模式是一种创建型设计模式,用于创建一系列相关或依赖对象的家族,而无需指定具体类。在Python中,可以通过类和接口的组合来实现抽象工厂模式。 下面是一个简单的Python实现抽象工厂模式的示例: # 抽象产品接口 class Abs…

【前端知识】React 基础巩固(三十二)——Redux的三大原则、使用流程及实践

React 基础巩固(三十二)——Redux的三大原则 一、Redux的三大原则 单一数据源 整个应用程序的state被存储在一颗object tree 中,并且这个object tree 只存储在一个store中;Redux并没有强制让我们不能创建多个Store,但是那样做不利于数据维护…

OpenHarmony与HarmonyOS联系与区别

目录 1. 背景 2.OpenHarmony 3.HarmonyOS 4.鸿蒙生态 5.OpenHarmony与HarmonyOS的技术上实现区别 1.语言支持 2.SDK 的不同 3.运行调测方式不同 4.对APK的兼容性不同 5.包含关系 6.调试命令 6.何时选择OpenHarmony或是HarmonyOS? 1. 背景 开篇就说“关于…

【洛谷】P5715 【深基3.例8】三位数排序

【深基3.例8】三位数排序 题目描述 给出三个整数 a , b , c ( 0 ≤ a , b , c ≤ 100 ) a,b,c(0\le a,b,c \le 100) a,b,c(0≤a,b,c≤100),要求把这三位整数从小到大排序。 输入格式 输入三个整数 a , b , c a,b,c a,b,c,以空格隔开。 输出格式 …

RabbitMQ集群搭建

说明:集群,不管是Redis集群,还是MQ集群,都是为了提高系统的可用性,使系统不至于因为Redis、MQ宕机而崩溃。本文介绍RabbitMQ集群搭建,RabbitMQ集群分为以下三类: 普通集群 镜像集群 仲裁队列 …

C语言中指针(简略复习)

一、指针 1. 指针运算 设p为指针,T为类型,n为整型数字,则pn表示,指针从当前位置向后移动n个数据单位,而不是n个字节。 数据类型不同,移动的数据单位字节数也不同,实际上移动的字节数为n*sizeo…

3DVR全景旅游,最新数字化智慧文旅

导语: 随着科技的飞速发展,3DVR全景旅游正以其独特的特点和无限的优势,成为当今智慧文旅的领航者。穿戴上VR设备,只需一个轻轻的点击,你将被带入一个全新的数字世界,领略美景、探索奇迹。让我们一起深入了…

探索容器镜像安全管理之道

邓宇星,Rancher 中国软件架构师,7 年云原生领域经验,参与 Rancher 1.x 到 Rancher 2.x 版本迭代变化,目前负责 Rancher for openEuler(RFO)项目开发。 最近 Rancher v2.7.4 发布了,作为一个安全更新版本,也…

【Spring MVC】Spring MVC的功能使用和相关注解介绍

Spring MVC主要有三个功能: 连接获取参数输出数据 对于 Spring MVC 来说,掌握了以上 3 个功能就相当于掌握了Spring MVC。 1.连接 连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能…

基于YOLOv5的WiderFace人脸检测检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于YOLOv5的WiderFace人脸检测系统可用于日常生活中检测与定位人脸目标,利用深度学习算法可实现图片、视频、摄像头等方式的人脸目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练数据集&…

[SQL挖掘机] - 算术函数 - mod

介绍: 当谈到 SQL 中的 mod 函数时,它是一个用于计算两个数值相除后的余数的函数。“mod” 是 “modulo” 的缩写,它表示取模运算。 函数用法: mod 函数的用法如下: mod(dividend, divisor)其中,dividend 是被除数&#xff0c…