分布式事务(1)-概念篇

把我的理解的几个概念作了一个总结,更贴近开发工做,更直白通俗的总结(意味着不严谨,但能懂)。数据库

ACID模型

单个关系型数据库就是用这个模型来保障高一致性和可用性的。

Atomicity原子性:一个事务中全部操做都必须所有完成,要么所有不完成。
Consistency一致性. 在事务开始或结束时,数据库应该在一致状态。
Isolation隔离层. 事务将假定只有它本身在操做数据库,彼此不知晓。
Durability. 一旦事务完成,就不能返回。
直白,简单的去理解
图片描述网络

BASE理论

和ACID相反,分布式事务中咱们没法作到强一致。
虽然可能不一致,但每一个应用均可以根据自身的业务特色,采用适当的方式来使分布式系统数据达到最终一致性。
  1. Basically Available基本可用。支持分区失败(e.g. sharding碎片划分数据库)
  2. Soft state软状态 状态能够有一段时间不一样步,异步。
  3. Eventually consistent最终一致,最终数据是一致的就能够了,而不是时时高一致。

CAP原则

分布式系统中,数据一致性和响应速度是成反比的。
要想多个系统数据一致,就须要时间进行同步;要想尽快响应用户,就要接受数据不一致的状况(每每就是业务权衡)。

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

数据一致性(consistency):

若是系统对一个写操做返回成功,那么以后的读请求都必须读到这个新数据;若是返回失败,那么全部读操做都不能读到这个数据,对调用者而言数据具备强一致性。分布式

1. 简单理解: 要往十个系统里每一个系统都增长一条数据,每一个子系统上面都进行修改为功,这样就保证了数据一致,可是时间也会延长;spa

服务可用性(availability)

全部读写请求在必定时间内获得响应code

1. 简单理解: 上面已经说到,为了保证数据一致性,咱们须要延长时间。那为了减小响应时间,咱们可能先在一个系统内增长一条数据,剩下的九个系统异步去添加,这就是牺牲数据一致性,换取可用性;图片

分区容错性(partition-tolerance) - 可靠性

在网络分区的状况下,被分隔的节点仍能正常对外服务,简单可理解为“可靠性”(两个系统外界看来就是总体,若是系统不能通讯了,成为分区。 若是不能保证分区容错性,则节点不能正常服务,不能服务就谈不上什么事务了,因此分区容错性是确定要保证的);事务

1. 分区容错性 的理解:多个系统组成一个分布式系统,外界看来这个系统是一个总体,一个区域。ci

2. 可是内部若是出现网络不通的问题,多个子系统就变成了孤岛,变成了多个分区,分区容错性就是指这种状况是,每一个子系统要可以适应这种问题,能正常提供服务,虽然数据可能没同步到其余子系统,但总比系统不能访问要好 。
图片描述开发

总结

分布式事务会结合上面三个概念进行实现,在实际开发中,就是根据具体业务在 数据一致性 和 服务可用性 二者之间进行权衡。

相关文章
相关标签/搜索