由事务到分布式事务

由事务到分布式事务

什么是事务

要么什么也不做,要做就做完。回滚机制

为什么需要事务

保证用户的每一次操作都是可靠的。否则当在ATM取钱的时候,机器宕机的话,你没有取到钱,但是显示已经扣款了,怎么办!

事务四个特性

保证事务四种特性ACID:

  1. A原子性。事务要么完成,要么失败。不能停留在中间状态。
  2. C一致性。一个事务执行之前,执行之后。数据库必须处于一致状态。
  3. I 隔离性。并发环境之中,不同的事务操作相同的数据时候,每个事务都有各自的完整空间。
    分为四种隔离级别:
    READ UNCOMMITTED 读未提交
    READ COMMITTED 读已提交
    REPEATABLE READ 重复读取
    SERIALIZABLE 串行化
  4. D 永久性。只要事务操作成功,所有更新操作都要被永久的保存下来。

什么是分布式事务

一次大的操作由不同的小操作组成,这些大操作分布在不同的服务器上。需要保持不同数据库的一致性。

为什么需要分布式事务

比如某电商系统的下单业务。一个是扣库存,一个是更新订单状态。两个在不同的服务器的数据库里面。所以需要保持两个事务的一致性。

分布式理论基础

  1. CAP理论
    C一致性。统一数据的多个副本是否实时相同。
    A可用性。 一定的时间内,系统返回明确结果。
    P分区容错性。 保证某一个宕机,仍有其他系统提供相同的服务。
    CAP理论得出,实际中只能选择2个条件。具体根据自己的业务需求,大多数系统都选择AP。
  2. BASE理论
    BA基本可用
    S 柔性状态
    E 最终一致性
    BASE理论是对CAP理论的一个扩充。就是虽然不能达到强一致性,但是可以达到最终一致性。

分布式事务解决方案

常见方案有如下几种:

  1. 基于XA协议2阶段提交,3阶段提交
    在这里插入图片描述
    XA三阶段提交不足:
    性能问题
    协调者和参与者单点故障都会导致不一致问题

XA三阶段提交在两阶段提交的基础上增加了CanCommit阶段,并且引入了超时机制。一旦事物参与者迟迟没有接到协调者的commit请求,会自动进行本地commit。这样有效解决了协调者单点故障的问题。但是性能问题和不一致的问题仍然没有根本解决。
2. 消息+最终一致性
在这里插入图片描述
利用消息中间件来异步完成事务的后一半更新,实现系统的最终一致性。这个方式避免了像XA协议那样的性能问题。
3. TCC模式
TCC事务是Try、Commit、Cancel三种指令的缩写,其逻辑模式类似于XA两阶段提交,但是实现方式是在代码层面来人为实现。

参考

猜你喜欢

转载自blog.csdn.net/qq_43612528/article/details/88550263