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

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


首先,什么是一致性?

一致性是指分布式系统中多个节点为达到某一数值而达成的协议。

具体来说,可以分为强一致性和弱一致性。

  • 强一致性:所有节点的数据在任何时候都是相同的。同时,您应该得到节点A中的key1值和节点B中的key1值。
  • 弱一致性:无法保证所有节点在任何时候都拥有相同的数据,并且存在许多不同的实现。最广泛实现的是最终的一致性。所谓最终一致性,是指任何节点上的相同数据在任何时间都是相同的,但随着时间的推移,不同节点上的相同数据总是朝着收敛的方向变化。也可以简单理解为,经过一段时间后,节点之间的数据最终会达到一致状态。

分布式和一致的应用场景:

多节点提供读写服务,确保高可用性和可扩展性(ZooKeeper, DNS, redis集群)

分布式系统面临的问题:

  • 消息异步(asynchronous):真实的网络不是一个可靠的通道,存在消息延迟、丢失,以及节点间消息不能同步(synchronous)
  • node-fail-stop:节点继续崩溃并且无法恢复
  • 节点宕机恢复(fail- recovery):节点经过一段时间后恢复,在分布式系统中最为常见
  • 网络分区:网络链接有问题,将N个节点分成多个部分
  • 拜占庭故障(拜占庭故障)[2]:节点或宕机或逻辑故障,即使没有卡抛出干扰分辨信息

需要满足一致性的分布式系统设计的一般前提是不存在拜占庭一般问题(内部网可信)

本文介绍了分布式系统的基本理论FLP定理,即当只有节点宕机时,系统的可用性和强一致性不能同时满足。另一种观点是CAP理论,即强一致性、可用性和分区容错,其中只有两种可以保证。

有许多协议确保一致性,包括2PC, 3PC, Paxos, raft和PacificA。

2PC:

两阶段锁提交协议,保证多个数据片上操作的原子性。(分布式事务)

将节点分为协调者和参与者(participat),并将执行分为两个阶段。

  • 阶段1:协调器发起一个建议,询问是否接受每个参与者。参与执行事务操作,将撤销和重做信息写入事务日志,并向协调器回复是或否。
  • 阶段2:协调器根据参与者的反馈提交或终止事务。如果参与者的回答都是yes,则提交,只要参与者的回答是no。根据协调器的提交/回滚信息正式提交或终止事务,释放占用的资源并返回ack。
  1. 优点:原理简单,易于实现
  2. 缺点:同步阻塞,单点问题,数据不一致(协调员崩溃之前发送提交请求或网络原因共识不收到提交的一部分,那么参与者不能提交事务的一部分),过于保守(如果参与者在协调)如果有失败在沟通、协调器只能依靠超时机制来确定事务需要打断。

3PC:

3级锁提交协议,保证多个数据片上操作的原子性。(分布式事务)

相对于2PC,分为查询、预提交、提交3个阶段(解决阻塞,但仍有数据不一致的可能)

流程:在收到参与者的反馈(投票)后,协调器进入阶段2,并向每个参与者发送准备提交命令。参与者可以在收到提交指令后锁定资源,但要求回滚相关操作。在收到应答(ACK)后,协调器进入第三阶段并提交/中止。3PC的第三阶段与2PC的第二阶段没有什么不同。3PC也采用协调看门狗和状态记录。


Paxos算法(求解单点问题)

Paxos算法是目前最重要的一致性算法,所有的一致性算法都是Paxos或Paxos的简化版本。

Paxos算法会解析相同数据的多个值,以达成一个值的一致。证明正确性的理论基础:任何两个合法集合(包含超过一半节点的集合)的交集都不是空的。

性格:

在投票过程的提案中有三个作用:

  • Proposer:可能有多于一个提案人,并负责提出建议。
  • Acceptor:必须有多个收件人。他们对特定的提案进行投票,同意接受提案,或不同意。
  • Learner:学习者,收集各Acceptor接受的提案,按照少数多数的原则形成最终提案。

事实上,分布式系统中的一个组件可以对应一个或多个角色。

算法描述:

*第一阶段(准备阶段)

申请人:

  • 选择提案编号n,向大多数接受人发送编号n的准备请求。

受体:

  • 如果提案号n大于已经收到的提案号,提案人承诺不接受编号小于n的提案号。如果之前已经接受过提案号,则以已接受提案号中编号最高的提案号为已发送提案号。
  • 如果收到的提案号n小于它收到的提案号的最大数目。

*第二阶段(接受阶段)

申请人:

  • 首先,依次接收响应:
  • 如果收到拒绝,将不处理。
  • 如果你收到了“同意”,同时也收到了“接受人”已经接受的建议书,记下建议书和编号。
  • 处理完回应后,计算拒绝和同意的数量:
  • 如果大多数人拒绝,为下一个提案做准备。
  • 如果大多数人同意,从这些Acceptors接受的提案中选择提案号最大的提案作为提案,不使用自己的提案,逐个向Acceptor发送Accept消息。

受体:

  • 如果收到的提案编号n小于它收到的最大提案编号。
  • 如果收到的提案编号n等于它收到的最大提案编号,该提案将被接受。
  • 如果接收到的提案号n大于它接收到的最大提案号。
  • 形成共识(与准备和接受阶段平行)

受体:

  • 每当一个提案被接受,提案和编号就会被发送给学习者。

学习者:

  • 记录每个接受人当前接受的提案。如果Acceptor连续发送多个提案,则保留数量最大的提案。
  • 计算接受每个提案的接受人数。如果有一半以上的人被接受,就会形成共识。


相关文章
|
1月前
|
消息中间件 算法 分布式数据库
Raft算法:分布式一致性领域的璀璨明珠
【4月更文挑战第21天】Raft算法是分布式一致性领域的明星,通过领导者选举、日志复制和安全性解决一致性问题。它将复杂问题简化,角色包括领导者、跟随者和候选者。领导者负责日志复制,确保多数节点同步。实现细节涉及超时机制、日志压缩和网络分区处理。广泛应用于分布式数据库、存储系统和消息队列,如Etcd、TiKV。其简洁高效的特点使其在分布式系统中备受青睐。
|
1月前
|
算法 分布式数据库
Paxos算法:分布式一致性的基石
【4月更文挑战第21天】Paxos算法是分布式一致性基础,由Leslie Lamport提出,包含准备和提交阶段,保证安全性和活性。通过提案编号、接受者和学习者实现,广泛应用于分布式数据库、锁和配置管理。其简单、高效、容错性强,影响了后续如Raft等算法,是理解分布式系统一致性关键。
|
1月前
|
存储 缓存 负载均衡
分布式系统Session一致性问题
分布式系统Session一致性问题
41 0
|
1月前
|
消息中间件 Dubbo 应用服务中间件
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
108 0
|
21天前
|
消息中间件 中间件 程序员
分布式事务大揭秘:使用MQ实现最终一致性
本文由小米分享,介绍分布式事务中的MQ最终一致性实现,以RocketMQ为例。RocketMQ的事务消息机制包括准备消息、本地事务执行、确认/回滚消息及事务状态检查四个步骤。这种机制通过消息队列协调多系统操作,确保数据最终一致。MQ最终一致性具有系统解耦、提高可用性和灵活事务管理等优点,广泛应用于分布式系统中。文章还讨论了RocketMQ的事务消息处理流程和失败情况下的处理策略,帮助读者理解如何在实际应用中解决分布式事务问题。
29 6
|
22天前
|
消息中间件 数据库 RocketMQ
可靠消息最终一致性分布式事务
推荐一个零声教育C/C++后台开发的免费公开课程,个人觉得老师讲得不错,分享给大家:C/C++后台开发高级架构师,内容包括Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习
32 2
|
26天前
|
运维 程序员 数据库
如何用TCC方案轻松实现分布式事务一致性
TCC(Try-Confirm-Cancel)是一种分布式事务解决方案,将事务拆分为尝试、确认和取消三步,确保在分布式系统中实现操作的原子性。它旨在处理分布式环境中的数据一致性问题,通过预检查和资源预留来降低失败风险。TCC方案具有高可靠性和灵活性,但也增加了系统复杂性并可能导致性能影响。它需要为每个服务实现Try、Confirm和Cancel接口,并在回滚时确保资源正确释放。虽然有挑战,TCC在复杂的分布式系统中仍被广泛应用。
32 5
|
3天前
|
存储 算法 安全
程序员必知:分布式一致性Raft与JRaft
程序员必知:分布式一致性Raft与JRaft
|
1月前
|
算法 程序员
破解Paxos活性难题:分布式一致性的终极指南
Paxos算法是解决分布式系统一致性问题的关键,由Leslie Lamport提出。它涉及提议者、接受者和学习者三个角色,通过准备和接受两个阶段达成共识。然而,确保算法的活性,即在面对网络分区、竞争冲突和节点故障时仍能及时决策,是一个挑战。解决方法包括领导者选举、优化提案编号管理、使用超时机制和Fast Paxos等。实际案例中,通过领导者选举和超时机制,可以提高Paxos在应对网络延迟和冲突时的活性。
46 1
|
1月前
|
Java 数据库连接 API
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
79 0