B2C电商项目(第十一天、分布式事务解决方案、Seata实现分布式事务、消息队列实现分布式事务、订单服务和用户服务业务代码)

一、分布式事务解决方案

学习目标 :

  1. 了解本地事务与分布式事务
  2. 了解CAP理论与BASE理论
  3. 了解常见分布式事务解决方案
  4. 能够通过Seata实现分布式事务
  5. 能够通过消息队列实现分布式事务

刚才我们编写的扣减库存与保存订单是在两个服务中存在的,如果扣减库存后订单保存失败了是不会回
滚的,这样就会造成数据不一致的情况,这其实就是我们所说的分布式事务的问题,接下来我们来学习
分布式事务的解决方案。

1.1 本地事务与分布式事务

1.1.1 事务

数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操
作序列构成。
事务拥有以下四个特性,习惯上被称为ACID特性:
原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么
都不执行。
一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态是
指数据库中的数据应满足完整性约束。除此之外,一致性还有另外一层语义,就是事务的中间状态不能
被观察到(这层语义也有说应该属于原子性)。
隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行,如同只有这一个
操作在被数据库所执行一样。
持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。在事务结束时,此操
作将不可逆转。

1.1.2 本地事务

起初,事务仅限于对单一数据库资源的访问控制,架构服务化以后,事务的概念延伸到了服务中。倘若将
一个单一的服务操作作为一个事务,那么整个服务操作只能涉及一个单一的数据库资源,这类基于单个服
务单一数据库资源访问的事务,被称为本地事务(Local Transac

你可能感兴趣的:(电商系统)