常见的分布式解决方案

这篇博客介绍了分布式系统中的事务处理和一致性模型,包括CAP理论、BASE理论以及强一致性、弱一致性和最终一致性。讨论了多种分布式事务解决方案,如2PC、3PC、TCC补偿模式、本地消息表、消息队列和最大努力通知方案。还特别提到了Redis和Zookeeper在分布式锁中的应用。总结指出,选择分布式事务方案需要权衡复杂性和成本,一般场景下可采用监控和日志记录,严格场景下可考虑TCC或可靠消息最终一致性方案。
摘要由CSDN通过智能技术生成

概念

  事务是单个逻辑单元组成的一组操作,执行这组操作时要么全成功,要么全失败。事务的特性包含一致性、原子性、隔离性和持久性。 原子性是指这组操作是一个整体,要么不执行,要么全部执行完,中间出现任何情况的打断(如意外断电)这组事务都不成功。 隔离性是指两组事务操作同一份数据是互补想干,就像隔离操作似的。 持久性是指事务提交后就永久的修改数据了。 一致性是指事务执行前后原来一致的数据和数据库仍然是一致的。比如订单表里增加了一个订单那么库存表里肯定是减少一份库存的。分布式事务就是在分布式系统中的,组成事务的这一组操作是在不同的节点上,需要保证事务的 AICD 特性。

理论

CAP

  在分布式系统中,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)3 个要素最多只能同时满足两个,不可兼得。其中,分区容忍性又是不可或缺的。也就说要么是AP要么是CP。
分区容忍性就是指分布式系统中肯定会出现系统异常,设计时要充分考虑好可能会发生异常,做好解决异常的备用方法。
一致性和上面讲的一致性是同样的意思。
可用性是指无论什么时候不会发生锁表的情况。这也正是A和C不能共存的原因。如果满足了一致性则写表时肯定会锁表,如果满足了可用性则肯定不能锁表。

BASE

BASE理论的核心思想是:
  基本可用(BasicallyAvailable):指分布式系统在出现故障时,允许损失部分的可用性来保证核心可用。
  软状态(SoftState):指允许分布式系统存在中间状态,该中间状态不会影响到系统的整体可用性。
  最终一致性(EventualConsistency):指分布式系统中的所有副本数据经过一定时间后,最终能够达到一致的状态。

分布式一致性模型

强一致性

  数据更新成功后,任意时刻所有副本中的数据都是一致的,一般采用同步的方式实现。

弱一致性

  数据更新成功后,系统不承诺立即可以读到最新写入的值,也不承诺具体多久之后可以读到。

最终一致性

  弱一致性的一种形式,数据更新成功后,系统不承诺立即可以返回最新写入的值,但是保证最终会返回上一次更新操作的值。

方案

2PC

  2PC是基于XA规范实现的,差不多是一回事。属于强一致性模型的一种方案。简单点说就是一组分布式事务操作中每个操作都执行完毕之后再提交。具体如下:
有一个事务管理器,负责协调多个数据库(资源管理器)的事务。协调者询问参与者事务操作是否预执行成功,参与者发回事务执行结果。如果每个数据库都回复ok,即预提交成功,就正式提交事务,在各个数据库开始执行操作,这里失败会有失败异常重试,日志分析,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值