何为事务:
事务:由一组操作构成的可靠、独立的工作单元。
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:如果业务操作成功,应用正常,但消息系统故障或网络故障,也会导致消息发不出去(系统的数据不一致)。
可靠消息的最终一致性方案设计:
消息实体设计:
优点:
全文完。