分布式事物ABC

事务处理的四个相当重要的特性

原子性 (Acomicity)

事物要么彻底成功并提交,要么根本不执行。数据库

示例:A转帐给B 100元,最后要么A帐号少了100元、B帐号增长了100元,要么转帐失败,A和B帐户都没有变化。而不该该出现A帐户减小了100元,但B帐户没有变化;或者A帐户没有变化,但B帐户增长了100元的状况。网络

一致性 (Consistency)

熟悉数据库的朋友都知道,数据库的一致性包括:分布式

  • 全部的主键值都是惟一的;
  • 数据库具备引用完整性,即记录只记录存在的对象;
  • 某些数据只能处于特定的范围(好比年龄小于150)

这里的事务一致性表示:对数据库单独执行事务的时候,若是数据库以前是一致的,执行完了以后也应该是一致的。ide

这里须要强调的是:和原子性、隔离性和持久性不通,一致性须要由事务程序和执行这些事务程序的TP系统共同负责。操作系统

隔离性(Isolation)

若是一个系统运行一个事务集的效果与系统一次运行其中的一个事务的效果相同,那么就说这个事务集是可隔离(可串行的serializable)。设计

举例:两个事物A、B同时从一个银行帐户取最后100元,若是能保证A、B一块儿执行的效果核A先B后或A后B先的效果同样,就说这类事物是可串行的。对象

持久性(Durability)

持久性是指当事物执行完毕,全部的更新都存储在稳定的存储器上,不受电源故障或操做系统对影响。之因此须要这样,是由于每一个事物都会向用户提供服务,至关于用户核提供服务的企业直接的合同。事务

举例:A向B转帐100元完成以后,A的帐户会少100元,B的帐户多100元,这个信息须要持久化到非易失性存储器上,以保证不会随着系统重启、异常掉电而丢失记录。ci

两阶段提交

若是一个事物中,设计多须要对多个数据(数据库)的处理,一般须要用到两阶段提交:同步

分布式事物的特性

一致性

分布式系统为了 高可用性,老是不可避免的使用副本的机制,从而引起副本一致性的问题。 根据具体的业务需求的不一样,分布式系统老是 供某种一致性模型,并基于此模型 供具体的服务。越是强的一致的性模型,对于用户使用来讲使用起来越简单。例如一般咱们总 是但愿某次更新后能够马上读到最新的修改,若是成功更新后的数据依旧有可能不一致读到旧数据, 那么用户就须要在写入数据时加入序列号等信息,并在读取数据时首先自行实现过滤去重后再使用 数据。

可用性

系统的可用性(availability)指系统在面对各类异常时能够正确 供服务的能力。系统的可用性可 以用系统停服务的时间与正常服务的时间的比例来衡量,也能够用某功能的失败次数与成功次数的 比例来衡量。可用性是分布式的重要指标,衡量了系统的鲁棒性,是系统容错能力的体现。

分区容忍性

指系统能够对网络分区这种异常情 况进行容错处理;

CAP 理论

该理论指出:没法设计一种分布式协议,使得同时彻底具有 CAP 三个属性,即:

  • 该种协议 下的副本始终是强一致性;
  • 服务始终是可用的
  • 协议能够容忍任何网络分区异常;

分布式系统 协议只能在 CAP 这三者间全部折中。CAP 理论的详细证实能够参考相关论文。这里能够简单用一个反例证实不存在 CAP 兼具的系 统。假设系统只有两个副本 A 和 B,Client 更新这两个副本,假设在网络分化时,Client 与副本 A 能够正常通讯,但副本 B 与 Client、副本 B 与副本 A 没法通讯,此时,Client 对副本 A 更新的信息 永远没法同步到副本 B 上。若是但愿系统依旧具备强一致的属性,则此时须要中止更新服务,即不 再修改数据,从而让副本 A 与副本 B 保持一致;若是但愿系统依旧能够 供更新服务,则只能更新 副本 A 而没法更新副本 B,此时没法保证副本 A 与副本 B 一致。

相关文章
相关标签/搜索