ACID
atomicity 原子性
consistency 一致性
isolation 隔离性
durability 持久性
XA协议
定义了事务管理器(TM)和资源管理器(RM)之间的接口
CAP
CAP即Consistency(一致性),Availability(可用性),Partition tolerance(分区容忍性)
- 一致性
每次操作,要么报错,要么返回最新的数据,强调数据正确 - 可用性
每次操作都能返回数据,不会报错,但不保证数据是最新的,强调不出错 - 分区容忍性
由于分布式系统通过网络进行通信,网络是不可靠的,当任意数量的消息丢失或延迟到达时,网络就产生了分区,不同区间无法通信,而此时系统仍会继续提供服务,不会挂掉。这就是分区容忍性
CAP是无法同时保证的
分布式系统的不同取舍只针对单个目标,不同目标可能采取的模式是不同的,比如12306系统,余票数量要求很强的一致性,超卖是不能接受的所以跟余票数相关的系统偏向CP模式,而用户的邮箱等信息更新不及时也问题不大只要每次能返回数据就行,所以偏向AP模式,具体情况要具体分析
BASE理论(柔性事务)
Basically Abailable 基本可用
Soft State 软状态
Eventually Consistent 最终一致性
BASE理论是对CAP中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性
分布式事务
2PC (CA)
什么是2PC
2PC(Two-Phase Commit)即两阶段提交协议,是将整个事务流程分为两个阶段
第一阶段
- 事务询问,协调者询问所有参与者是否可以执行操作,等待相应
- 执行事务,协调者通知所有参与者执行事务,并且写入undo和redo
,然后各参与者回复协调者事务执行情况
第二阶段
- 事务提交,协调者收到所有参与者返回成功的信息以后通知所有参与者提交事务,释放资源
- 事务回滚,有某个参与者返回失败或者超时,通知所有参与者回滚事务
2PC的优缺点
- 同步阻塞
二阶段提交执行过程中,所有的逻辑都处于阻塞状态,等全部提交完了才释放,此时无法进行其他操作,极大的限制了分布式系统的性能 - 单点问题
协调者非常的重要,如果协调者挂了,整个流程将无法运作 - 丢失消息导致的数据不一致问题
3PC
什么是3PC
3PC(Three-Phase Commit)是2PC的改良版,分为CanCommit、PreCommit、DoCimmit三个阶段
第一阶段
- 事务询问,协调者询问所有参与者是否可以执行操作,等待相应
第二阶段
- 事务询问全部成功则通知所有参与者事务预提交
第三阶段
- 事务提交,协调者收到所有参与者返回成功的信息以后通知所有参与者提交事务,释放资源
- 事务回滚,有某个参与者返回失败或者超时,通知所有参与者回滚事务,如果协调者挂了,参与者在超时以后也会提交事务