Distributed_事务_共识(主从复制共识问题)

CockroachDB: The Resilient Geo-Distributed SQL Database 论文阅读笔记 前言 本文绝大部分内容源自 CockroachDB 论文。 介绍 CockroachDB 是一个可扩展(Scalable)的 SQL DBMS,它主要用于支撑 OLTP 工作流,并保持高可用性(High Availability)和强一致性(Strong Consistency)。论文主要呈现了 CockroachDB 创新的事务模型,它在商用硬件上支持一致(Consistent)的分布式事务。 论文在 Introduction 提出了一个情景:一个公司在欧洲和澳洲有一个大用户基数,并且美国的用户数也在迅速 阅读详情
1.共识问题
  1. 共识问题的形式化描述:一个或多个节点可以提议某些值,由共识算法来决定最终值。

  2. 共识算法的性质:

    1. 协商一致性(Uniform Agreement)(所有的节点接收相同的决议);

    2. 诚实性(Integrity):所有节点不能反悔自己接收的决议即不能对提议进行二次决定;

    3. 合法性(Validity):如果决定了值v,则v一定是由某个节点所提议的。

    4. 可终止性(Termination):由所有未崩溃的节点来最终决定值。

      前三个属性提供了安全性,最后一个属性提供了容错。

      **对于不考虑拜占庭式错误的共识算法,则可终止性的前提:**出现错误的节点数应该是少于总节点数的1/2

      对于考虑拜占庭式错误的共识算法,则可终止性的前提: 出现错误的节点数应该是少于总节点数的1/3

  3. 实际中的共识协议:

    实际共识协议是决定一系列的值,然后采用全序关系广播算法,相当于进行了多轮共识过程:在每轮中,节点提出他们接下来想要发送的消息,然后决定下一轮消息的全局顺序。比如区块链中的POW,POS等等

2. 主从复制中的共识协议

这里的主从复制是指存在主节点和从节点之分,但是主节点并不是固定的,是需要选举产生的。

  1. 基本问题:所有的写入操作都由主节点负责**(换句话说主节点具有提案权)**,并以相同的顺序发送到从节点来保持副本更新。其中主节点选举过程则是一个共识的问题?写入操作的顺序也是一个共识问题?
2.1 Epoch和Quorum
  1. 协议里定义一个世代编号(epoch number)并保证在每个世代里,主节点是唯一确定的。(每轮中的主节点都有一个世代编号的属性epoch number)

  2. 进入一个新世代epoch的条件:如果发现当前的主节点失效,节点就开始一轮投票选举新的主节点。

    问题:如果一个世代里出现了两个主节点(主节点A的epoch number>主节点B的epoch number),则具有更高的epoch number的主节点将获胜。

  3. 在主节点做出任何决定之前,它必须首先检查是否存在比它更高的epoch号码,否则就会产生冲突的决定。主节点如何知道它是否已被其他节点所取代了呢?

    解决方案:

    ​ 主节点在做出任何决定之前,会将自己的提案(附加epoch number)发送到所有其他节点,等候quorum节点(通常quorum设置为多数节点即(n+1)/2个节点)响应,其他节点只有当没有发现epoch number大于接收到提案的epoch number的主节点时,对该提案进行投票。

    ​ 由于每个提案上的epoch number与提案的主节点epoch number一致,所以当主节点接收到提案上的epoch number大于自身的epoch number则认为自己被其他节点所取代。

    ​ 当其他节点收到epoch number不同的提案时,只会对epoch number较大的提案投票.

2.2 共识算法和2PC的区别(共识算法设计角度)
  1. 2PC的协调者并不是依靠选举产生的。

  2. 容错共识算法只需要收到多数节点的投票结果即可通过决议,而2PC则要求每个参与者都必须做出“是”才能最终通过。

    如何选举主节点?

  3. 共识算法还定义了恢复过程,出现故障之后,通过该过程节点可以选举出新的主节点然后进入一致的状态。

    当主节点宕机,如何重新选举新的主节点?

    当其余节点宕机,如何恢复一致性?

2.3 共识算法的缺陷
  1. 多数共识算法假定一组固定参与投票的节点集,这意味着不能动态添加或删除节点。
  2. 共识系统通常依靠超时机制来检测节点失效。
  3. 共识算法对网络问题特别敏感。

4.知识、真相与谎言

1.总结

​ 探讨分布式系统中的知识和真相,做出合理的假设,以及可以做出哪些保证。

2. 真相由多数决定

​ 分布式系统设计原则:节点不能根据自己的信息来判断自身的状态。由于节点可能随时会失效,可能会暂停-假死,甚至最终无法恢复,因此,**分布式系统中不能依赖于单个节点。**目前,许多分布式算法都依靠法定票数,即在节点之间进行投票。任何决策都需要来自多个节点的最小投票数,从而减少对特定节点的依赖。

3.拜占庭式容错系统

​ 如果某个系统中即使发生部分节点故障,甚至不遵从协议,或者恶意攻击、干扰网络,但仍可继续正常运行,那么我们称之为拜占庭式容错系统。

适用范围:

​ 在去中心化的点对点网络中,拜占庭容错共识协议显得尤为重要。

从拜占庭将军问题到分布式系统的一致性 本文我们从拜占庭问题聊起,说到了分布式系统的一致性问题。本质上的一致性,其实追求的还是最终一致性,并不存在完美的解决方案,而是在现实各种约束条件下,往往需要通过牺牲掉某些需求,来设计出满足特定场景的协议。工程领域中不少问题都不存在一劳永逸的通用解法;而实用的解决思路都是合理地在实际需求和条件限制之间进行灵活的取舍。 阅读详情

相关推荐

分布式锁(Distributed lock)

分布式锁是用于分布式系统中协调共享资源访问的互斥机制,确保同一时间只有一个客户端能访问资源。主要实现方式包括:基于数据库(简单但性能差)、基于Redis(高性能但不保证强一致性)和基于ZooKeeper/etcd(强一致但性能中等)。分布式锁需满足互斥性、可重入性、锁超时释放等特性,并应对锁超时、死锁、网络分区等挑战。最佳实践包括设置合理超时时间、细粒度锁、唯一标识校验等。选择方案时应根据业务对一致性、性能和可用性的需求权衡。

guigenyi的专栏 1302

Distributed_事务_共识(原子提交问题)

关于事务一致性中共识问题中的原子提交问题

Blockchain210的博客 349

PALF-OceanBase分布式数据库基于Paxos的预写日志复制技术

PALF: Replicated Write-Ahead Logging for Distributed DatabasesPALF:分布式数据库的复制预写日志技术注: 非校准状态,后续会详细研究该文章后再推出校准后的内容。如果不能等的朋友们可以先看看。Distributed databases have been widely researched and developed in recent years due to their scalability, availability, and consi

Querycache的博客 1729

Distributed_事务__共识(一致性)

分布式系统中一致性相关理论知识

Blockchain210的博客 579

分布式之系统底层原理(下)

共识(Consensus),很多时候会见到与一致性(Consistency)术语放在一起讨论。严谨地讲,两者的含义并不完全相同。一致性的含义比共识宽泛,在不同场景(基于事务的数据库、分布式系统等)下意义不同。具体到分布式系统场景下,一致性指的是多个副本对外呈现的状态。如前面提到的顺序一致性、线性一致性,描述了多节点对数据状态的共同维护能力。而共识,则特指在分布式系统中多个节点之间对某个事情(例如多个事务请求,先执行谁?)达成一致意见的过程。因此,达成某种共识并不意味着就保障了一致性。实践中,要保证系统满足不

Moonxiyue的博客 332

Distributed Systems Concepts and Design:Coordination and Agreement协调和协议

它们具有实际重要性,因为许多系统必须处理故障,因此必须检测故障,无论故障是可靠的还是不可靠的。协调是为了解决分布式系统中的并发问题。协调的目的是为了保证系统中的操作能够按照正确的顺序执行,避免出现冲突或死锁的情况。总之,协调和协议是分布式系统中的重要概念,它们确保了系统中的各个组件能够协同工作,从而实现了分布式系统的可靠性和可用性。由于分布式系统中的各个组件是独立运行的,它们之间需要通过协调来达成一致的目标。共识算法可以让分布式系统中的各个组件达成共识,即使在某个组件出现故障的情况下也能保证系统的正确性。

[Blog][Domain] programb.blog.youkuaiyun.com 436

Calvin: Fast Distributed Transactions for Partitioned Database Systems研读

在论文中作者提出了一种全新的解决分布式事务的方案Galvin。它是一个分布式事务解决框架,不依赖存储层,只要满足CRUD的存储层均可。作者的核心思路是对即将处理的事务进行预处理,只事务执行之前在执行层面达成事务执行的共识,作者通过将事务记录写入日志,这样事务在日志中的顺序就是事务的执行顺序,这是一个全局的事务日志,从而保证事务执行在全局层面达成共识。 Calvin分成三层 sequencing layer:这一层负责劫持和收集所有的事务请求,并将它们按照10ms的时间窗口batch提交到全局事务日志,论

软件工程小施同学 的专栏 848

Designing Distributed Systems: Patterns and Paradigms f

作者:禅与计算机程序设计艺术 1.简介 分布式系统一直是当今最热门的话题之一,尤其是在互联网领域、移动应用、云计算等新兴技术带来的全新的并发架构模式下。由于分布式系统往往会遇到复杂的拓扑结构和网络传输延迟,因此在设计时要考虑到可扩展性、可用性和容错性等特性。在本文中,作者将介绍分布式系统设计中的一些基本

AI天才研究院 820

分布式共识算法

Paxos、Multi Paxos 和 Gossip

凄戚的博客 1518

3分钟创建智能体

智能体简介会在首页以及名片页展示,需要简洁明了的介绍智能体用途✅优秀示例:最好用第三人称直接说明智能体用途~如:打造生动文案好帮手、专业解梦,探寻梦境奥秘等❌反面教材:简介并未介绍用途、语义含糊。如:今天写点啥、看看你做的梦等以上步骤完成后,点击发布,就能成功创建属于你自己的智能体啦~仅自己可访问(免审):发布后仅开发者本人账号可访问、预览、使用该智能体仅链接可访问:发布后任何人均可通过链接访问、预览、使用该智能体。

soso1968的博客 2081

Linux系统杀毒软件深度评测:8款主流工具对比(2025最新版)

本文针对Linux服务器/桌面环境,实测8款杀毒软件,涵盖开源免费、企业级防护、轻量级工具等类型,附保姆级安装教程和避坑指南,新手也能5分钟选对工具!

awei0916的专栏 1万+

Distributed algorithm

Atomic commit two-phase commit protocol Coordinator Cohort QUERY TO COMMIT

332

StarRocks FE启动异常

服务器断电,StarRocks FE 启动失败。

qq_15138049的博客 1112

Distributed Database System —— 分布式数据库的两种架构风格

文章目录概述PGXC:单体数据库的自然演进NewSQL:革命性的新架构 概述 总的来说,分布式数据库大多可以分为两种架构风格 一种是 NewSQL,它的代表系统是 Google Spanner; 另一种是从单体数据库中间件基础上演进出来的,被称为 Prxoy 风 格,没有公认的代表系统,便于理解,所以选了一个出现较早的产品来指代这种风 格,这就是 PostgreSQL-XC(下文简称 PGXC)。 数据库从逻辑上拆分为 5 个部分,分别是客户端通讯管理器 (Client Communications M

No_Game_No_Life_的博客 1071

量化金融笔记1-股票量化基础

股票量化基础 文章目录什么是股票股票的定义及其诞生所解决的问题股票的主体和流通股票的常规分类股票价格收益率什么是股票价格的收益率股票价格收益率计算在python中的实现两种收益率算法的特点及应用场合股票交易规则场内交易与场外交易A股、B股、H股国内多层次的资本市场股票交易指令和撮合机制股票交易时间股票交易成本股票复权股票数据介绍与提取行业分类和指数行情数据因子数据标的数据基本面数据 什么是股票 股票的定义及其诞生所解决的问题 股票的定义:股票是一种有价证券,是股份有限公司公开发行的用以证明投资者的股东身份

折桂狂人的博客 2394

树莓派 SPI操作

扩展板配备一款0.96inch,128864分辨率的oled显示屏,通过SPI控制,先上显示效果图。由于程序过长,在这里我就不把代码全部贴出来了,只是简单讲解一下spi的操作函数。管脚如下如所有,左边方框的管脚分别为MOSI MISO SCLK,左边CE0,CE1为两个片选管脚,分别对应上图中的spidev0.0,spidev0.1两个设备。下载spidev库,复制到树莓派,并行运行如下命令解压安装。spi设备,此处设备为/dev/spi-decv0.0。在/dev路径下面,我们可以发现两个spi设备。

weixin_46529898的博客 914

Spanner: Google’s Globally-Distributed Database 总结

Spanner总结一、前言二、关于框架三、关于数据模型四、关于时间五、关于并发控制 一、前言 二、关于框架 三、关于数据模型 四、关于时间 五、关于并发控制

xiaopan的博客 1815

基于Python的房地产评估数据抓取与分析 —— 房价走势与市场报告

在房地产行业中,了解和分析房产价格的变化趋势、各个地区的房价差异以及市场评价报告,可以帮助投资者、购房者以及政策制定者做出更加明智的决策。本文介绍了如何使用Python爬虫技术抓取房地产平台上的房产评估报告、价格走势等数据,并对抓取的数据进行分析。通过这些技术,您可以自动化抓取房地产平台的数据,分析房价走势,获取市场报告,为房地产投资决策提供数据支持。假设我们要从链家网抓取某个房产的价格、房产描述以及历史成交价格,首先需要获取目标房产页面的URL,并发送HTTP请求。伪装为常见浏览器,避免被识别为爬虫。

2201_76125261的博客 846

Distributed System Transaction —— 各种一致性(Consistency)的讨论

文章目录概述一致性需要考虑的几个问题各种一致性顺序一致性线性一致性因果一致性和最终一致性 概述 在Distributed System Transaction —— 什么是线性一致性(Linearizability)?一文中,介绍过一致性这样的概念,对于一致性,简单的分类是“强一致”和“弱一致”,但这只是一种统称,实际上可以分为:(弱->强) 最终一致性(Eventual) 因果一致性(Casual) 顺序一致性(Sequential) 线性一致性(Linearizable) 所以强一致是包含顺序

No_Game_No_Life_的博客 839

深度强化学习 | 基于SAC算法的动态避障(ROS C++仿真)

本文介绍了基于SAC(软性演员-评论家)算法的机器人运动规划方法,通过PyTorch框架实现了端到端训练,并部署到Python和ROS C++中。实验结果显示,基于SAC算法的智能体在动态避障任务中表现良好,能实现从起点到终点的无碰撞导航。

FRIGIDWINTER的博客 8205

PX4从放弃到精通(二十一):使用git管理PX4代码

文章目录前言一、设置git密钥二、将代码上传至gitee 前言 Ubuntu 18.04 PX4 1.11.3 由于github有时网速较慢,本文使用gitee。 一、设置git密钥 ssh-keygen -t rsa -C “your_email@youremail.com” your_email@youremail.com为自己注册的gitee账户邮箱.设置路径与密码时,也直接回车不设置,如下图,密钥生成的位置在红框处. 在密钥目录下按Ctrl+H显示隐藏文件,进入.ssh文件夹用gedit打开id

超维空间科技的博客 3475

分布式事务_实施分布式锁概述

分布式事务 众所周知,锁通常用于监视和控制多个线程同时访问共享资源。 它们基本上保护并发应用程序中的数据完整性和原子性,即,一次只能有一个线程可以获取共享资源上的锁,否则将无法访问该锁。 但是在分布式环境中的锁定不仅仅是在多线程应用程序中的互斥锁。 由于必须立即跨集群或网络中的任何节点出现故障的所有节点获取锁定,因此情况变得更加复杂。 这是我们考虑的用户故事,用于在本文的其余部分中说明方案。 ...

cunhu4317的博客 407

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

从TCP/IP到分布式共识:构建可靠系统的网络与分布式核心原理

计算机网络是分布式系统的通信基石,其核心在于理解TCP/IP协议栈的工作原理。TCP通过三次握手建立可靠连接,并利用滑动窗口进行流量控制,而UDP则提供低延迟的无连接服务,两者共同支撑了分布式节点间的数据传输。在分布式系统中,网络分区、节点故障等部分失效问题成为常态,这催生了对一致性、可用性和分区容忍性的权衡思考,即CAP定理。为了解决多节点协同的挑战,共识算法如Raft和Paxos应运而生,它们通过Leader选举和日志复制机制,确保在不可靠网络中达成一致状态。这些基础协议与算法,最终服务于构建高可用的键

weixin_30315905的博客 419

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

分布式事务的多种解决方案

需求缘起 在微服务架构中,随着服务的逐步拆分,数据库私有已经成为共识,这也导致所面临的分布式事务问题成为微服务落地过程中一个非常难以逾越的障碍,但是目前尚没有一个完整通用的解决方案。 其实不仅仅是在微服务架构中,随着用户访问量的逐渐上涨,数据库甚至是服务的分片、分区、水平拆分、垂直拆分已经逐渐成为较为常用的提升瓶颈的解决方案,因此越来越多的原子操作变成了跨库甚至是跨服务的事务操作。最终结果是在对高...

weixin_34124939的博客 148

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

分布式数据库 PolarDB-X: An Elastic Distributed Relational Database for Cloud-Native Applications

云计算正在蓬勃发展,这促使新一代数据库系统需要适应云环境。云原生数据库的发展揭示了三个趋势。第一个趋势是采用多数据中心部署,以便在任何单个站点宕机时仍能正常运行。(可用性和服务连续性要求)第二个趋势是将计算和存储资源分离,即存算分离,以实现更高的弹性和可伸缩性。最后一个趋势,是支持 HTAP,以消除异构数据库中的数据冗余和系统复杂性。为满足这些趋势,该论文设计了名为 PolarDB-X 的分布式关系型数据库,该数据库建立在云原生数据库 PolarDB 之上。

wowowoc的专栏 1167

百度网盘Mac版解除下载限速完整指南:BaiduNetdiskPlugin-macOS三步提速实战

凌晨一点,你把一个9.23GB的游戏安装包丢进百度网盘Mac客户端,准备睡一觉起来开玩。屏幕上冷冷地写着:100.00 KB/s,剩余超过1天。按这个速度,这台机器接下来25个小时只能干这一件事——而BaiduNetdiskPlugin-macOS就是为破解百度网盘Mac版下载速度限制而生开源插件,它通过动态库注入和方法交换(Method Swizzling),让本地客户端误以为你就是SVIP,把

gitblog_00626的博客 319
上一篇: Distributed_复制_无主复制(读写quorum)
下一篇: Dockerfile Reference(中文手册)
Blockchain410
博客等级 码龄5年 3230粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blockchain410

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值