微服务事务管理

目录

一、分布式事务问题

1、本地事务

2、分布式事务

3、分布式事务问题

二、理论基础

1、CAP定理

(1)一致性

(2)可用性

(3)分区容错

(4)矛盾

2、BASE理论

3、解决分布式事务的思路

三、初识Seata

1、Seata的架构

2、部署TC服务

3、 微服务集成Seata

(1)引入依赖

(2)配置TC地址

(3)其他服务

四、实例代码

1、XA模式

(1)两阶段提交

(2)Seata的XA模型

(3)优缺点

(4)实现XA模式

2、AT模式

(1)Seata的AT模型

(2)AT与XA的区别

(3)脏写问题

(4)优缺点

(5)实现AT模式


一、分布式事务问题

1、本地事务

        本地事务,也就是传统的单机事务,在传统数据库事务中,必须要满足四个原则

2、分布式事务

        分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如:

  • 跨数据源的分布式事务
  • 跨服务的分布式事务
  • 综合情况

        在数据库水平拆分、服务垂直拆分之后,一个业务操作通常要跨多个数据库、服务才能完成。例如电商行业中比较常见的下单付款案例,包括下面几个行为:

  • 创建新订单
  • 扣减商品库存
  • 从用户账户余额扣除金额

        订单的创建、库存的扣减、账户扣款在每一个服务和数据库内是一个本地事务,可以保证ACID原则。但是当我们把三件事情看做一个"业务",要满足保证"业务"的原子性,要么所有操作全部成功,要么全部失败,不允许出现部分成功部分失败的现象,这就是分布式系统下的事务了。此时ACID难以满足,这是分布式事务要解决的问题。

3、分布式事务问题

        就好比说我现在要创建一个订单,呢我就要去调用账户服务去获取金额,再调用库存服务去扣减商品库存等等,如果有一个服务中的操作失败了,呢么其余的还是会进行,会导致库存减少了,但是没付钱的这种情况等等,这就不符合一个正常业务的功能和逻辑。

二、理论基础

        解决分布式事务问题,需要一些分布式系统的基础知识作为理论指导。

1、CAP定理

        1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标

  • Consistency(一致性)
  • Availability(可用性)
  • Partition tolerance (分区容错性)

(1)一致性

        Consistency(一致性):用户访问分布式系统中的任意节点,得到的数据必须一致。比如现在包含两个节点,其中的初始数据是一致的:

        当我们修改其中一个节点的数据时,两者的数据产生了差异:

        要想保住一致性,就必须实现node01 到 node02的数据同步:

(2)可用性

        Availability(可用性):用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝如图,有三个节点的集群,访问任何一个都可以及时得到响应:

        当有部分节点因为网络故障或其它原因无法访问时,代表节点不可用:

(3)分区容错

        Partition(分区):因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区。

        Tolerance(容错):在集群出现分区时,整个系统也要持续对外提供服务。

(4)矛盾

        在分布式系统中,系统间的网络不能100%保证健康,一定会有故障的时候,而服务有必须对外保证服务。因此Partition Tolerance不可避免。

        当节点接收到新的数据变更时,就会出现问题了:

        如果此时要保证一致性,就必须等待网络恢复,完成数据同步后,整个集群才对外提供服务,服务处于阻塞状态,不可用。

        如果此时要保证可用性,就不能等待网络恢复,那node01、node02与node03之间就会出现数据不一致。

        也就是说,在P一定会出现的情况下,A和C之间只能实现一个。

2、BASE理论

BASE理论是对CAP的一种解决思路,包含三个思想

  • Basically Available(基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
  • Soft State(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。
  • Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

3、解决分布式事务的思路

        分布式事务最大的问题是各个子事务的一致性问题,因此可以借鉴CAP定理和BASE理论,有两种解决思路&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值