0%

什么是事务

事务是恢复和并发控制的基本单位。

ACID特性

  • Atomicity
    原子性:事务中的所有操作要么都成功执行,要么都取消执行,不存在部分执行,部分取消的情况。
  • Consistency
    一致性:事务前后数据的完整性必须保持一致。
    可以理解为,从一个一致的状态转换到另一个一致的状态
    事务的一致性决定了一个系统设计和实现的复杂度,也导致了事务的不同隔离级别。
    ACID就是说事务能够通过AID来保证这个C的过程,C是目的,AID都是为保证C而存在的。
  • Isolation
    隔离性:并发事务之间互相影响的程度,隔离性是分级别的,eg. 读未提交、读已提交、可重复读等。
  • Durability
    持久性:事务提交后对数据的更改是永久性的,不会丢失。
    阅读全文 »

为什么需要分布式事务

相对于 本地事务(单个数据源上进行数据访问和更新) 而言,分布式事务是跨越多个数据源进行数据的访问和更新,即,事务的发起者、参与者、数据资源服务器以及事务管理器分别位于分布式系统的不同节点上。
分布式事务的目的是保障分布式环境下的数据一致性。

CAP

说到一致性,我们都知道,分布式系统有一个著名的CAP定理,即:一致性、可用性和分区容忍性无法同时满足,最多只能实现两点。

Consistency

一致性 - 所有节点在同一时间的数据完全一致。
按照CAP定理的取舍,有三类一致性模型:

  • 强一致性
    更新完成后,任意时刻读取到的所有节点中的数据都是一致的。一般采用加锁同步的方式实现,对性能影响较大,会牺牲可用性。
  • 弱一致性
    更新完成后,系统不承诺可以立即读到最新写入的值,也不承诺具体多久之后可以读到。
  • 最终一致性
    弱一致性的一种形式,更新完成后,系统不承诺可以立即返回最新写入的值,但是保证最终会返回上一次更新操作的值。
    注:CAP的C特指强一致性,弱一致性和最终一致性是为了弥补AP之下的数据一致性。

Availability

可用性 - 即,服务可用,能正常的接收请求并及时给予响应,不出现操作失败或访问超时等影响体验的情况。
注:这里的可用性不是通常所说的高可用,而是指服务器虽然在线,但却不能对外提供写入服务。

Partition Tolerance

分区容忍性 - 在遇到部分节点或网络分区故障时,仍能对外提供满足一致性或可用性的服务。
网络分区是指独立的机器无法在期望的时间内完成数据交换,这不仅仅指网络断开,还可能有其他情况产生网络分区,比如宕机、网络延时等。

阅读全文 »