1. 事务
- 原子性(Atomicity),一个事务内的所有操作要么都执行,要么都不执行。
- 一致性(Consistency),执行之前和执行之后,数据始终处于一致性的状态,也就是不会存在中间状态的数据。比如你账上有400,我账上有100,你给我打200块,此时你账上的钱应该是200,我账上的钱应该是300,不会存在你账上扣了钱,我账上还没加钱的中间状态。
- 隔离性(Isolation),指的是多个事务并发执行的时候互不干扰,即一个事务内部的数据对于其他事务来说是隔离的。
- 持久性(Durability),事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
2. 分布式事务
分布式事务指将海量数据分散的存储到多台服务器的多台数据库中,同时要具备 ACID 特性。
分布式事务支持 CAP 理论 和 Base 理论
CAP理论
-
C:一致性(Consistency),数据在多个副本中保持一致,可以理解成两个用户访问两个系统A和B,当A系统数据有变化时,及时同步给B系统,让两个用户看到的数据是一致的。
-
A:可用性(Availability),系统对外提供服务必须一直处于可用状态,在任何故障下,客户端都能在合理时间内获得服务端非错误的响应。
-
P:分区容错性(Partition tolerance),在分布式系统中遇到任何网络分区故障,导致节点之间通信失败,系统仍然能对外提供服务。
![](https://img-blog.csdnimg.cn/a6401e5e30f24acf98a1d0364d878b21.jpeg)
- 当网络发生故障时,系统A和系统B没法进行数据同步,也就是我们不满足P,同时两个系统依然可以访问,那么此时其实相当于是单机系统,就不是分布式系统了,所以既然我们是分布式系统,P必须满足。
- 当P满足时,如果用户1通过系统A对数据进行了修改将data1改成了data2,也要让用户2通过系统B正确的拿到data2,那么此时是满足C,就必须等待网络将系统A和系统B的数据同步好,并且在同步期间,任何人不能访问系统B(让系统不可用),否则数据就不是一致的。此时满足的是CP。
- 当P满足时,如果用户1通过系统A对数据进行了修改将data1改成了data2,也要让系统B能继续提供服务,那么此时,只能接受系统A没有将data2同步给系统B(牺牲了一致性)。此时满足的就是AP。
Base理论
由于CAP中一致性C和可用性A无法兼得,提出了BASE理论,它通过牺牲数据的强一致性,来获得可用性。
-
Basically Available(基本可用):分布式系统在出现不可预知故障的时候,允许损失部分可用性,保证核心功能的可用。
解释:基本可用,就是允许可用性降低。可能响应延长(假设加载5万请求3ms内响应,现在有6万请求,延长到5ms内响应)、可能服务降级(网购场景下,如果网络不好,就先加载文字,后加载图片))。 -
Soft state(软状态):软状态也称为弱状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
解释:在付款过程中,会有 待支付->支付中->支付成功 三种状态,支付中就可以理解为软状态 -
Eventually consistent(最终一致性):最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。