multi paxos协议

1. Redo Log 同步的核心目标

  • 数据一致性:确保所有副本在事务提交后具有相同的数据视图。
  • 容错性:在主副本故障时,从副本能快速接管并恢复数据。
  • 高吞吐:通过批量同步和并行处理提升效率。

2. Multi Paxos 协议的同步流程

Multi Paxos 协议通过多轮投票机制协调副本间的日志同步。paxos协议用于保证同一个数据分片的多个副本之间的数据一致性。

(1)事务提交阶段
  1. 客户端发起事务
    客户端向主副本提交事务请求(包含读写操作和 redo log 记录)。

    Client → Leader: {"type": "transaction", "redo_log": [...]}
  2. 主副本处理事务

    • 主副本执行事务的读写操作,并将 redo log 记录写入本地日志。
    • 关键动作:主副本作为 ​Proposer,生成包含 redo log 的提案(Proposal)。
(2)提案阶段(Propose Phase)​
  • 广播提案
    主副本向所有从副本(包括自身)广播提案,包含:
    • 提案编号​(唯一标识,递增)。
    • 事务的 redo log
    Leader → Followers: {"proposal_id": 1, "redo_log": [...]}
(3)投票阶段(Voting Phase)​
  • 从副本投票
    每个从副本(Acceptor)根据以下规则决定是否接受提案:
    1. 合法性检查:提案的 proposal_id 必须大于已接受的提案。
    2. 日志兼容性redo log 必须与本地已提交日志兼容(如顺序一致)。
    Follower → Leader: {"vote": "accept", "proposal_id": 1}
  • 多数派原则
    必须获得 ​超过半数​ 的投票(包括主副本自身)才能通过提案。
(4)确认阶段(Commit Phase)​
  • 提交通知
    主副本收到多数派确认后,广播提交消息给所有副本:
    Leader → All: {"commit": "proposal_id": 1}
  • 应用 Redo Log
    • 主副本立即应用 redo log 到本地数据。
    • 从副本在收到提交通知后,异步应用 redo log
​(5)同步完成
  • ACK确认
    从副本向主副本发送确认(ACK),表明 redo log 已应用。
    Follower → Leader: {"ack": "proposal_id": 1}
  • 日志清理
    主副本删除已提交的 redo log 节点,释放存储空间。

3. 故障恢复与同步

​(1)主副本失效
  • 故障检测
    从副本通过心跳机制(如每秒一次)检测主副本活性。若连续丢失心跳,启动 ​故障恢复
    Follower → Monitor: "Leader heartbeat timeout"
​(2)新领导者选举
  • Multi Paxos 重新选举
    所有存活节点参与新一轮 Multi Paxos 选举:
    1. 候选者提议:节点依次成为临时领导者,广播提案。
    2. 投票表决:其他节点投票给最高优先级(如任期最长)的候选者。
    3. 确认领导地位:获得多数派投票的节点成为新主副本。
​(3)日志同步恢复
  • 请求缺失日志
    新主副本向其他从副本查询未提交的 redo log
    New Leader → Follower: "request_log_range(1, 100)"
  • 同步未提交日志
    从副本返回缺失的 redo log,新主副本重新广播提交。

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

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

相关文章

借壹起航东风,中国工厂出海开启新征程

在经济全球化不断深入的当下,中国工厂正以积极的姿态投身海外市场,渴望在全球商业版图中占据一席之地,绽放独特的光彩。然而,出海之路充满了挑战与艰辛,品牌塑造困难重重、询盘量不稳定、营销成本居高不下等问题&#…

【MySQL】监控MySQL

目录 使用状态变量监控MySQL 使用性能模式(Performance Schema)监控MySQL 1.性能模式 2.性能模式设置表 3.sys模式 使用状态变量监控MySQL 使用 show status 语句评估系统运行状况。 可以添加范围修饰符global或session来显示全局或本地状态信息。…

在linux系统上卸载并重新安装Docker及配置国内镜像源指

前言 Docker 作为容器化技术的核心工具,广泛应用于开发、测试和部署环境。但在某些情况下(如版本冲突、配置错误等),可能需要彻底卸载并重新安装 Docker。此外,国内用户直接访问 Docker 官方镜像源可能速度较慢&#…

Mysql内置函数篇

🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 7.函数 7.1 日期函数 函数总:​编辑 获得当前日期 获得…

小爱控制OK影视搜索视频

在adb connect ip以后,可以这样打开Ok影视,并且进行控制 pm list packages -3 #只显示第三方 dumpsys package com.fongmi.android.tv |grep Activity #返回 com.fongmi.android.tv/.ui.activity.HomeActivity am start -n com.fongmi.android.tv/.u…

电机倍频曲线的一些奇异特性-原因分析及应用

这里对感应电机倍频曲线的特征进行了说明,然后将其特性用于电机转差率和工况的测量。先给出可以直接利用的结论: 电机的工况和转差率谱线会体现为5x,7x谱线调制在基频附近。两条调制过携带s信息的谱线距离基频谱线的距离。 与真实转速相对同步转速的频差…

双指针技巧在C++中的应用:从基础到进阶

目录 1.简介 2.同向双指针 2.1.数组去重 2.2.最大子数组和 2.3.链表反转 2.4.字符串匹配(简单版) 3.对向双指针 3.1.两数之和(有序数组) 3.2.盛最多水的容器 4.快慢指针 4.1.判断链表是否有环 4.2.寻找链表的中间节点…

语言解码双生花:人类经验与AI算法的镜像之旅

大家好,我是吾鳴。 今天吾鳴要给大家分享一份由浙江大学出品的DeepSeek报告,报告从语言的奥秘,人类是如何通过语言来解码世界,AI又是如何理解人类的语言,同时介绍了当下爆火的DeepSeek-V3和DeepSeek-R1两种大模型的进化…

如何避免测试数据准备不充分或不可复用

避免测试数据准备不充分或不可复用的关键方法包括明确数据需求、统一数据管理工具、建立数据复用机制、定期维护更新测试数据以及加强团队沟通与协作。 其中,统一数据管理工具对确保数据质量和复用性尤为重要。例如,许多团队采用专门的测试数据管理工具以…

HTTP 核心知识点整理

1. HTTP 基础 ​定义:HTTP(HyperText Transfer Protocol)是应用层协议,基于 ​请求-响应模型,用于客户端(浏览器)与服务器之间的通信。​特点: ​无状态:每次请求独立&a…

汤臣倍健业绩倒车:2024年利润下滑超六成,三大核心品牌销量失守

撰稿|行星 来源|贝多财经 汤臣倍健的2024年,“隐痛”不少。 3月22日,国内膳食营养补充剂供应商汤臣倍健股份有限公司(SZ:300416,下称“汤臣倍健”)公布了2024年年度报告。财报显示,汤臣倍健过去一年出现了…

C#中的Lambda表达式‌

在C#中,‌Lambda表达式‌是一种比匿名方法更简洁、更灵活的语法形式,用于定义匿名函数(Anonymous Function)。它通过>运算符实现,能够大幅简化委托和表达式树的编写,是现代C#编程中广泛使用的核心特性之…

通信系统的性能指标

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、通信系统的性能指标概述二、数字通信系统的有效性指标三、数字通信系统的可靠性指标总结 前言 一、通信系统的性能指标概述 其中一个提高,另一个…

Linux:(模拟HTTP协议,GET和POST方法,Http的状态码)

目录 一、认识HTTP协议 1.上网的本质 2.应用层的运行逻辑 3.HTTP的概念 二、url 1.认识网址 三、HTTP协议的宏观理解 1.HTTP请求 2.HTTP响应 3.实际的HTTP请求 (1)测试代码 (2)接收HTTP请求 (3&#xff09…

动态规划之完全背包

引言: 完全背包 隶属于动态规划中的背包问题。而 01背包 又是完全背包的基石,所以不懂01背包的,有必要了解一下。 什么是完全背包? 01背包问题:有一个背包承重为V,有N个物品,每个物品的价值(…

Codeforces Round 1003 (Div. 4)

ABCDE略 F 如果这个序列有两个一样的数挨着或者中间只隔一个其他的数&#xff0c;那么这个数就是多数。可以用反证法&#xff0c;构造一个多值序列无法不包含以上两种结构。只需要在树上找这两种结构就可以了 #include <bits/stdc.h> #define int long long using nam…

金融数据分析(MATLAB)个人学习笔记(5):金融实证分析实例

一、国内外常用金融数据库简介 &#xff08;一&#xff09;国外数据库 1. CRSP数据库 CRSP&#xff08;Center for Research in Security Prices,证券价格研究中心&#xff09;是美国芝加哥大学商研所金融研究中心的产品。收集的美国股票和指数数据来源主要为纽约证券交易所…

硬件基础(3):三极管(4):关于三极管的压降

文章目录 三极管的压降使用与测量注意事项 三极管的压降 三极管的“压降”通常是指在一定工作状态下&#xff0c;三极管不同电极之间产生的电压差。对于常见的双极性晶体管&#xff08;BJT&#xff09;而言&#xff0c;最常讨论的压降通常包括以下几个部分&#xff1a; 基-发射…

[深度学习]图像分类项目-食物分类

图像分类项目-食物分类(监督学习和半监督学习) 文章目录 图像分类项目-食物分类(监督学习和半监督学习)项目介绍数据处理设定随机种子读取文件内容图像增广定义Dataset类 模型定义迁移学习 定义超参Adam和AdamW 训练过程半监督学习定义Dataset类模型定义定义超参训练过程 项目介…

5.go切片和map

切片的概念 数组和切片相比较切片的长度是不固定的&#xff0c;可以追加元素&#xff0c;在追加时可能会使切片的容量增大&#xff0c;所以可以将切片理解成 "动态数组"&#xff0c;但是&#xff0c;它不是数组&#xff0c;而是构建在数组基础上的更高级的数据结构。…