分布式事务之可靠消息的最终一致性(一)

本文深入探讨了事务的概念,包括原子性、一致性、隔离性和持久性,并介绍了分布式系统中的BASE理论与CAP定理,以及如何设计可靠消息的最终一致性方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

何为事务:

事务:由一组操作构成的可靠、独立的工作单元。
Atomicity(原子性):整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。        Consistency(一致性):一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
 Isolation(隔离性):隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。
Durability(持久性):在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚

 

分布式事务相关理论:

1:BASE理论

在分布式系统中,我们往往追求的是可用性,它的重要程序比一致性要高,那么如何实现高可用性呢? 前人已经给我们提出来了另外一个理论,就是BASE理论,它是用来对CAP定理进行进一步扩充的。

BASE理论指的是:

Basically Available基本可用)

Soft state软状态)

Eventually consistent最终一致性)

BASE理论是对CAP中的一致性和可用性进行一个权衡的结果。

理论的核心思想就是:

我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性Eventual consistency)。

2:CAP定理

CAP定理是由加州大学伯克利分校Eric Brewer教授提出来的,他指出WEB服务无法同时满足一下3个属性:

具体地讲在分布式系统中,在任何数据库设计中,一个Web应用至多只能同时支持上面的两个属性。显然,任何横向扩展策略都要依赖于数据分区。因此,设计人员必须在一致性与可用性之间做出选择。

思考?

消息发送一致性如何保障?

/** 支付订单处理 **/
 public void completeOrder() { 
// 订单处理(业务操作)         orderBiz.process(); 
// 发送会记原始凭证消息(发送消息)      sendAccountingVoucherMsg ();
 }

1:如果业务操作成功,执行消息发送前应用故障,消息发不出去,导致消息丢失(系统的数据不一致)。

2:如果业务操作成功,应用正常,但消息系统故障或网络故障,也会导致消息发不出去(系统的数据不一致)。

可靠消息的最终一致性方案设计:

消息实体设计:

优点:

全文完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值