分布式一致性的一点个人理解

分布式一致性协议三部曲-深入理解一致性协议Paxos 在理解分析分布式一致性协议前,我们必须先看下CAP理论 CAP CAP是指在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)这三个要素最多只能同时实现两点,不可能三者兼顾。 Consistency 一致性 一致性指“all nodes see the same dat... 阅读详情

这里纯粹是写一点个人感想,完全不保证正确性。
分布式一致性作为一个巨大的概念,内涵可以非常广。

  • 分布式事务
  • 缓存一致性
  • 消息系统的exactly once语义。
  • zookeeper的最终一致性
  • …

在大部分的时候,数据一致性并不是一个非常严重的问题(至少没有人的生命重要)。**除了涉及到钱的时候。**设想,各国的央行都采用数据库来记账。如果一个国家坚决认为另外一个国家欠自己钱而另外一个国家的数据库里没有对应记载并怀疑对方的目的。那么战争就开始了。而我们可能永远不会知道差错只是一个分布式一致性。

从zookeeper谈起

简单而言,你想让A组件做一件事,并让B组件做另一件事, 并试图保证最终一致性,都叫分布式一致性的内涵。为什么是最终一致性?因为BASE理论和CAP理论,在物理学家解决不了网络分区问题前,数学家我们最多只能在系统可用的前提下,实现最终的一致性。理论上讲(参考Fischer等的论文),两台机器理论上无法达到一致的状态。两台都不可能,三台可能吗?当然是更不可能。

实现BASE理论,数学家给我们提供了paxos和其他算法,被应用于zookeeper上。zookeeper虽然是分布式的去中心化的,但是能保证集群内对一个问题最终能有一个一致的算法,只要你保证别有一半(包含)的节点不同时挂掉。虽然我可能一辈子都无法理解这个算法,但请允许我献上自己膝盖。这个算法并非没有缺点,我们知道,一旦leader节点因为某周问题与其他节点失去联系了,其他的节点会重新选举leader。漫长的选举事件可能会持续一两分钟,选取期间新的服务不可能注册上来。这“似乎”是不可容忍的。当你需要访问zookeeper的节点以百万计数的时候,zookeeper一样会成为瓶颈。
http://www.sohu.com/a/246888995_683048
但是paxos算法开销太大,对我们程序员也太复杂了。所以,其实我们做不到BASE。有些解决方案干脆舍弃CAP中的C也就是完全舍弃“分布式事务”这个概念。比如说Euraka,专心保证高可用。所以说Euraka是比Zookeeper更好的服务注册中心。这是在一窝蜂的似的使用ZK然后因为服务数量太大踩坑之后清醒。
我们当然也可以在日常业务中使用paxos算法。比如说用ZK记录一笔订单。不出意外,所有节点最终将对这笔订单形成一致的看法。我们知道,ZK的写是严格顺序性单线程的且写成功必须要等到一半节点对一件事情有统一认知上。然而,我们采用一个单机数据库难道性能不是更好嘛?或者说,一个主库,一群从库?

方案之主从数据库(伪装的分布式一致性)

仿照Zookeeper,我们也可以有一个下面的方案。
在这里插入图片描述
但这个方法一样是以牺牲写吞吐量为代价的。其实,这个方案就是zookeeper的简化版。具体的性能取决于你相较Paxos算法简化了多少(也就是牺牲了多少一致性)。另外一种方案如下。
在这里插入图片描述
当然,你也可以看到,如果在从数据库拉取主数据记录前主数据中间的连接完蛋了,那你也就无法谈及分布式一致性了。
上面我们谈的一致性,只是指主从数据库之间的一致性。同样,两个没有主从关系的数据库一样会有一致性问题。下面这个方案,恐怕就是人类在面对分布式一致性问题时第一个想到的方案了。

方案之数据库分布式事务规范

https://blog.youkuaiyun.com/define_us/article/details/108998152
这里不在赘述。
想说的是,其实无论是哪种方式,到最后都是最大努力通知。比如说2PC,如果最后一个C死活不成功也就没有办法了。TCC也是一样。

缓存一致性

数据库是一个节点,缓存是一个节点。两者之间的一致性,就是缓存一致性。
https://blog.youkuaiyun.com/define_us/article/details/83339123

但是采用先update数据库,再删除缓存的方式可以避免分布式事务的复杂度。原因是假设了update比select时间更长。这个假设不一定成立。但是缓存一般有超时时间。所以一致性相对保证较低。相对而言效率比较高。

分布式唯一ID的(伪分布式一致性)

如果我们有办法快速获取一个严格顺序分布式唯一ID,分布式一致性的问题也就可以迎刃而解。设想一个有很多人的会议室,每个人都有一个账本,希望和他人保持一致。需要写入数据的人,只要获取一个全局顺序ID,以该ID将消息告诉给别人就可以了。

这样其他人无论在任何时候离开或者进入会场,都会根据当前的全局ID和自己本地存储的ID的差距,向其他人请求自己没有的记录。系统的最终一致性很容易就能保证。即使在传播过程中该消息丢失了,除非彻底丢失,否则整个系统会达到最终一致性。即使彻底丢失,整个系统仍然是最终一致的。

但是显然,这种方法是一个伪分布式,因为一个中心化的全局唯一ID。分布式唯一严格顺序ID问题和全局锁问题等价(全局锁可以使用两个分布式唯一ID采用排队的方式实现),反过来全局锁也很容易实现分布式唯一ID。如果能有全局锁,其实整个系统已经变成了一个串行系统,而不再是分布式了。

消息队列的一致性

消息队列的Exactly Once

实际为了保证这一点,Kafka让每一个Producer发送数据的每个<Topic, Partition>都对应一个从 0 开始单调递增的Sequence Number。Broker 端也会为每个<PID, Topic, Partition>维护一个序号,并且每次 Commit 一条消息时将其对应序号递增。对于接收的每条消息,如果其序号比 Broker 维护的序号(即最后一次 Commit 的消息的序号)大一,则 Broker 会接受它。否则就会向Producer返回错误。如果Producer接到来自broker的成功返回,则进行本地记账(认为成功发送了一条数据)。

整个流程如下

发送者发送消息---->接受者接收消息------->接收者记账-------->发送者接收到成功返回------->发送者记账

这种方法是否能保证分布式一致性呢?可以。但是,这就是一个彻头彻底的CP方案了。因为,只要接受者故障,发送者就没有办法记账了。整个系统不再具有更新自己状态的能力。有人提出了另一个方案,就是在发送端增加一个ID。这个ID记录系统的状态。然后按照上述机制向接受者发送事件。即使接受者故障,发送者只要继续增加ID,等待接受者上线再发送积压的时间就可以了。
为了分析这一方案,我们回到事件的本质。单向的Exactly Once消息传递其实很容易实现。只要给每一个消息进行唯一编号,然后无限重发,接收端根据编号进行过滤就行,可以论证只要时间足够长,发送者和接受者能达到一致的状态(最终一致性)。但是此时,整个系统实际上已经不是分布式系统了。因为只有发送者持有系统的状态。和zookeeper的master不同,此时的发送者一旦挂掉并丢失本地所有记录,这个个系统的状态就永久性丢失了。

流数据处理中Exactly Once

不少流处理引擎都宣称自己支持Exactly Once,比如说Flink,JStorm,Storm Trident,Kafka Stream等。实现的机制基本上都是2PC。一个普遍的缺陷是不能实现端到端的Exactly Once。比如说一个组件更新了外部系统,那么回滚,只能回滚自身状态,外部系统就无能为力,依赖使用者的实现了。

事务性消息

看一个常见的金融CASE。
在这里插入图片描述

一个合理可接受的系统是3,4,5必须同时发生或者都不发生。
此时,就需要引入一种机制,也就是事务性消息.事务性消息的实质就是,发布一个消息,和本地的另一个动作(可能是更新数据库,可能是一个外部访问,可能是发送另一条消息,必须同时成功,或者同时失败。)最简单的思路显然就是2PC。先发送消息,成功后进行本地其他动作的预提交,正常后提交消息或者回滚消息。
在这里插入图片描述

kafka的Producer支持发送多条消息作为一个事务。为此引入了broker端的Transaction Coordinator。其维护了Transaction Log。Producer将在处理完多条消息后向Transaction Coordinator发送commit或者abort,Transaction Coordinator会通知broker和consumer关于某个消息决定。在收到最终决定之前,consumer实际上是将已经拉到本地的未决消息缓存或者不从broker拉取未决消息。这个说白了就是一个2PC。producer先发给多个外部(consumer,coordinator,broker)一个消息,成功后,再发送确认信息。至于确认信息有没有被他们收到?我们是伟大的2PC,我说过我保证分布式一致性了吗?

kafka支持的另一种常见事务是接收Kafka——处理——发送到Kafka的例子。同样利用了Producer的上述机制。不过是把消息是否发送成功的依赖由上面的“发送别的消息”变成了“消费处理流程”。唯一需要注意的是,消费这一过程会对外部系统产生影响,所以,Kafka提供了sendOffsetsToTransaction,通知broker端将对自己消费kafka的offset更新也纳入到同一个transaction以内。

RocketMQ也号称自己支持事务消息。
https://blog.youkuaiyun.com/define_us/article/details/83309749
其实现的机制无非是2PC加上回查。所谓回查,就是既然分布式一致性如此难做到,那么我们consumer就定期把哪些producer发过来但是没有确认的事件再拉出去问Producer就好了嘛。无论如何,我可以把consumer端的commit和producer的commit进行一下对比,该回滚哪一个就很清楚了。很暴力的解决方式。但是,第一是2PC已经能解决绝大部分问题,第二是这个回查机制本身也很复杂。

总结

物理学上所谓的“量子隧穿效应”:一个能量为E的粒子,向前方一个具有能量大于E的势垒射去,这个粒子有一定的几率从势垒穿过去。这个势垒就类似于宏观世界的墙,所以微观粒子通常可以轻松实现“穿墙”。现实生活中,我们也并非没有穿墙的可能(表面意思)。只是概率很低,低到我们不会去一次次撞墙企盼自己可以穿过去。但是,这里我想说的是,如果连一面墙都不可靠,那么我们为什么要苛求自己的系统保证分布式一致性呢?我们活在一个概率世界里,努力并不一定会被他人认可,偷懒也不一定被他人发现,分布式一致性吗?

  • 永远要重视日志。存储在掉电不失的介质上的记录是我们在寻求外部系统帮助前最后的救命稻草。当然,这种存储介质(最常见就是磁盘)一样是一个容易单点的故障的系统组件。所以我们又发展了磁盘阵列技术(RAID)或者像在程序射击时进行了冗余存储(Kafka,HDFS等的replica)机制。对于后一种方案,如何让不同的磁盘保证一致性同样又回到了原点。不过故障的概率就要小了点。对于前一种方案,RAID组成的磁盘在逻辑上就是一块磁盘,也就不是什么分布式系统了。

  • 永远要重视维护工作。不要允许你的员工踹机箱。机房空调一定不要省电。雇佣更多的客服来解决问题。便宜的农民工没有了,但是便宜的大学生遍地都是。不是吗?开除一个需要哄着供着的科学家可以换来一堆员工,开会也更有面子。

Zookeeper核心知识及分布式一致性算法 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。 提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。而这些功能都是基于Zookeeper能在分布式的集群中保证数据一致性的,这也是Zookeeper最核心的能力。 Zookeeper集群对数据的一致性的保证和Zookeeper集群高可用这两个核心功能归纳为两个知识点: 1.ZAB( ZooKeeper Atomic Broadcast , ZooKeeper 原子消息广播协议) 2 阅读详情

相关推荐

SpringBoot+Flowable 6.8.0实战:5分钟搞定免登录流程图设计器

本文详细介绍了如何通过SpringBoot与Flowable 6.8.0深度整合,快速实现免登录流程图设计器的集成方案。通过排除默认安全配置、自定义安全策略和用户模拟服务,开发者可在5分钟内完成设计器的部署,适用于快速原型开发和企业内部工具搭建。

weixin_29204205的博客 279

「数据一致性」理解分布式系统中的一致性

首先,什么是一致性?一致性是指分布式系统中多个节点为达到某一数值而达成的协议。具体来说,可以分为强一致性和弱一致性。强一致性:所有节点的数据在任何时候都是相同的。同时,您应该得到节点A中的key1值和节点B中的key1值。弱一致性:无法保证所有节点在任何时候都拥有相同的数据,并且存在许多不同的实现。最广泛实现的是最终的一致性。所谓最终一致性,是指任何节点上的相同数据在任何...

全网:架构师研究会 1164

如何理解: 分布式理论的一致性

1)什么是分布式一致性 分布式数据一致性,指的是数据在多份副本中存储时,各副本中的数据是一致的。 2)副本一致性 分布式系统当中,数据往往会有多个副本。如果是一台数据库处理所有的数据请求,那么通过ACID四原则,基本可以保证数据的一致性。而多个副本就需要保证数据会有多份拷贝。这就带来了同步的问题,因为我们几乎没有办法保证可以同时更新所有机器当中的包括备份所有数据。 网络延迟,即使我在同一时间给所有机器发送了更新数据的请求,也不能保证这些请求被响应的时间保持一致存在时间差,就会存在某些机器之间的数据不一致的情

qq_36194388的博客 842

KEGG数据库与KAAS工具:基因功能注释的实用指南

本文提供了使用KEGG数据库与KAAS工具进行基因功能注释的完整实用指南。详细阐述了如何从准备基因或蛋白序列开始,通过KAAS服务器获取KEGG Orthology(KO)编号,并解读注释结果。文章进一步介绍了如何利用KOBAS工具进行通路富集分析,将定性观察转化为定量洞察,并分享了提高注释准确率、处理大数据集及使用API等避坑技巧与高阶方法,为基因组学、转录组学研究者奠定坚实的数据分析基础。

weixin_29292535的博客 390

Qlib+backtrader:2014.1.1-2023.9.20最新回测结果,可以实盘吗?

今年以来,在研究了qlib和backtrader的基础上,把二者结合起来进行了一个策略研究。简单说就是用qlib在200只股票的股票池中进行滚动训练与预测(walk forward),总体数据范围是2005到2023年,以20日间隔滚动训练和预测,最终得到2014.1.1-2023.9.20共10年测试期的收益率预测结果。将预测结果代入backtrader进行回测,得到如下回测结果。

qtbgo的博客 1783

谈谈对分布式一致性的一点理解

文章目录引言一致性的分类客户角度的一致性线性一致性前缀一致性单调读一致性读己之写服务器角度的一致性强一致性顺序一致性单主节点多主节点因果一致性总结 引言 这是一个很大的主题。我相信每一个初学分布式的人开始时都像我一样深深的思考过这个问题,但是却仍然是一头雾水,然后每经历一次“顿悟”,又会因为某个新的问题再次陷入沉思,所幸在经历过几个这样的来回以后算是对这个问题在脑子里有了一个简单且算是全面的印象,遂记录这一篇博客以帮助更多的人能够对这个问题有着更为深入的理解。事实上我在一个月以前就想写下这篇文章了,可是当时

李兆龙的博客 1457

医学图像分割实战:基于TransUNet训练自己的眼底硬渗出物数据集(附完整代码)

本文详细介绍了基于TransUNet的眼底硬渗出物分割实战指南,涵盖数据预处理、模型调优、训练策略及性能优化等关键环节。通过代码复现和实验对比,展示了TransUNet在医学图像分割中的优势,为糖尿病视网膜病变的早期诊断提供技术支持。

weixin_42524708的博客 363

分布式事务的一致性

一、事务 数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令。事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行,因此事务是一个不可分割的工作逻辑单元。 事务的四大特性:ACID (原子性,一致性,隔离性,持久性) 1.1 原子性 原子性是我们对事务最直观的理解:事务就是一系列的操作,要么全部都执行,要么全部都不执行。 1.2 一致性 事务的一致性定义基本可以理解为是事务对数据完整性约束的遵循。这些约束可能包括主键约束、

weixin_43315211的博客 2030

2026最新贝壳二手房爬虫实战:突破极验5.0滑块验证码,完整房源数据采集方案

本文详细介绍了2026年贝壳找房爬虫技术方案,重点突破其极验5.0滑块验证码等反爬机制。文章首先解析了贝壳六大核心反爬模块,包括AI驱动的验证码、设备指纹绑定和TLS指纹识别等。针对最难破解的滑块验证码,提出了基于YOLOv11深度学习模型的缺口检测方案,准确率达99.5%,并结合人类行为轨迹模拟实现98%以上的成功率。最后设计了分布式爬虫架构,包含任务调度、代理池、验证码服务和数据清洗等模块,为大规模采集贝壳真实房源数据提供了完整解决方案。该方案在复杂反爬环境下仍保持高效稳定,具有重要的商业和研究价值。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2054

8.Python基础语法(五)续【光说不练假把式,上题】

Python基础语法(二) 有关于Python循环语句的几道实操,让大家理解知识点更深更透彻~

孤寒者的博客 2万+

分布式事务一致性与数据一致性的理解

关于各种一致性的理解: 1、数据一致性,往往指的是缓存和数据库的一致性。 2、事务的一致性,和原子性类似,都是从一个状态变到另一个状态,但不同的是,原子性追求这个过程不能出错,不论结果对不对,不能出错。但一致性更追求结果一致,比如A减少100,B增加100,这是一致的。当A减少100,B增加60,这是原子的,但不是一致的。 3、分布式事务的一致性:本质上来说,分布式事务就是为了保证在分布式场景下,数据操作的正确执行。但分布式事务不像本地事务,可以做到ACID,分布式事务做不到。比如分布式存储场景下,一个存储

qq_41733487的博客 3119

STM32入门教程:智能马桶盖控制

通过编写相应的代码,您可以根据需要实现其他功能,例如座圈温度调节和液晶显示屏显示等。初始化配置 首先,使用STM32CubeMX创建一个新的工程,并选择您所使用的STM32单片机型号。智能马桶盖是一种集成了多种功能的智能家居设备,通过控制芯片来实现自动冲水、座圈加热、座圈温度调节等功能。在本教程中,我们将使用STM32系列单片机来控制智能马桶盖的各个功能。以上代码演示了如何通过STM32的GPIO控制引脚来控制智能马桶盖的冲水和座圈加热功能。写代码 接下来,我们将通过编写代码来控制智能马桶盖的各个功能。

2401_85258012的博客 657

分布式一致性算法Paxos

分布式一致性是指在分布式系统中,多个节点对同一份数据进行修改或读取时,保证这些操作所产生的结果都是相同的。在实际应用中,由于网络延迟、节点崩溃等因素的存在,可能会导致不同节点的数据副本出现不一致的情况。因此,分布式一致性成为了分布式系统设计中一个非常重要的问题。例如,考虑一个在线购物网站的场景,该网站使用分布式系统处理订单和库存信息。当一个用户下单时,该订单会被写入多个节点的数据库中并同时减少相应商品的库存数量。

愿万事胜意 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

一文理解分布式常见的一致性算法

导语 | 后台服务架构经过了集中式、SOA、微服务和服务网格四个阶段,目前互联网界大都使用微服务和服务网格。服务从集中式、中心化向分布式、去中心化不断演进,服务也变得更灵活,能够自动扩缩容...

过往记忆大数据 6011

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

理解分布式一致性:Raft协议

这里写自定义目录标题什么是分布式一致性Leader选举日志复制流程 在分布式系统中,分布式一致性是一个非常重要的概念,它是指分布式系统的各个服务器都保持一个统一的状态(数据)。但是在分布式系统中,通常由于网络,系统状态等原因会导致某些服务不可用或者不可靠。这就需要一种分布式一致性的协议来保证系统在某些服务失败的情况下仍然整体可用。 Raft协议是受到Paxos的影响而产生的,相对于Paxos而言,...

程序那些事 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Redis分布式算法原理—Hash一致性理解

Hash一致性理解前言Redis集群使用功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 一致性Hash算法在分...

我思故我在 coding很澎湃 1万+

Raft算法详解:最容易理解的分布式一致性算法

Raft是一个用于实现分布式一致性的共识算法,和Paxos目标相同。易于理解的一致性算法。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;Raft角色选举成功发起选举Leader领导者Follower跟随者Follower跟随者Follower跟随者Candidate候选人角色职责状态Leader。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 4772

理解分布式一致性:Paxos协议之Basic Paxos

理解分布式一致性:Paxos协议之Basic Paxos角色 在理解分布式一致性:Raft协议中,我们详细分析了什么是分布式一致性和实现分布式一致性的Raft协议,本文我们主要讲一下分布式一致性的Paxos协议。 大家可能在各个场合都听说过Paxos协议,毕竟这个开创性的协议是很多分布式协议的鼻祖,比如后面比较有名的Raft协议就是基于Paxos协议发展而来的。现实中也有很多产品在使用Paxos协...

程序那些事 7597

【RPC】分布式一致性与一致性协议

在CAP、ACID和BASE中都提到了一致性。但是对于一致性的整个定义还是非常模糊的,所以本文会详细介绍一致性的模型,以及目前比较流行的一致性协议。数据一致性并不只有存在与不存在两种情况,就像可以用0%到100%之间的任意数值来代表可用性的程度一样,一致性也有一些分类。一致性模型按照强弱可以粗略地分为弱一致性模型、最终一致性模型和强一致性模型。下面就分别介绍一下这几种一致性模型。线性一致性又称为原子一致性和强一致性。如果需要达到线性一致性,则需要满足如下条件:第一点非常容易理解,第二点则约束了两个维度下时间

一定要站在自己热爱的生活里闪闪发光 1万+

分布式一致性背景和理解

分布式一致性概念 分布式一致性是一个相当重要且被广泛探索与论证的问题,下面从下面三个业务厂场景简单了解下一致性的概念 1.购买火车票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然后拿着车票去检票口,再坐上火车,开始了一段美好的旅行。 想象一下,如果他选择的目的地是杭州,而某一趟开往杭州的高铁只剩下最后一张车票,可能在同一时刻,不同售票窗口的另一位乘客也购买了同一张车票。假如说售票系统没有进行一致性的保障,这个时候,两个人都进行了购票,而在检票口进行检票的时候.

crossroads10的博客 435

分布式一致性算法简介

文章目录基础理论ACIDAtomic 原子性Consistency 一致性Isolation 隔离性Durability 持久性CAPConsistency 一致性Availability 可用性Partition tolerance 分区容错性BASEBasically Available 基本可用Soft state 软状态Eventually consistent 最终一致性分布式一致性算法时间戳和向量时钟时间戳向量时钟2PC阶段1 提交事务请求,即投票阶段阶段2 执行事务提交,即执行阶段优缺点3PC

李歇特冯-兹拜因巴哈的博客 2236

理解分布式一致性:拜占庭容错与PBFT

理解分布式一致性:拜占庭容错与PBFT拜占庭问题拜占庭容错BFTPBFT(Practical Byzantine Fault Tolerance)why 3f+1 ?PBFT 的优点PBFT 的缺点 之前的几篇文章我们讲了分布式协议里面的Paxos协议和Raft协议。这两个协议主要适用于可信节点的情况,所谓可信节点就是节点只会出现因为系统或者网络问题的宕机情况,不会有恶意节点。 那么如果有恶意节点...

程序那些事 7828

分布式一致性算法——Paxos 和 Raft 算法

本文主要围绕Paxos算法和Raft算法进行了讨论。我们首先介绍了分布式一致性算法的概念和必要性,然后分别从算法基本原理、角色和状态、基本流程、选举过程、优缺点等方面详细介绍了Paxos算法和Raft算法。同时,我们也对这两种算法进行了比较和区分,并讨论了如何选择合适的算法以满足不同场景下的需求和限制。为了更加清晰地描述算法的流程,我们也对Paxos算法和Raft算法的基本流程和选举过程进行了图形化展示。本文将对从事分布式系统相关工作的人员有所帮助,有助于更好地理解分布式一致性算法。

Shockang的博客 6682

深度解析 Raft 分布式一致性协议

对于我们的KV服务,要像操作一台机器一样,对用户来说在写入成功后,就应该能读到最近写入的值,而不关心具体底层是如何分布式实现。最终一致性:读取可能暂时读不到但是总会读到线性一致性:最严格,线性时间执行(写完KV确保就能读到),是最理想中的状态选主(Leader election)就是在分布式系统内抉择出一个主节点来负责一些特定的工作。在执行了选主过程后,集群中每个节点都会识别出一个特定的、唯一的节点作为 leader。

听得到微笑的博客 6645

关于一致性哈希的一点理解

一致性哈希是分布式哈希表(DHT)其中一种实现,如读者还不是很了解分布式哈希可以阅读这篇博客 在开始介绍一致性哈希概念之前,让我们先来看看 ...

Ryanqy的专栏 607
上一篇: redis用作队列例子(JEDIS)
下一篇: Kafka增加Replica的办法
define_us
博客等级 码龄14年 157粉丝 531原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值