什么是微服务架构及分布式事务的解决方案

发布时间:2021-10-21 09:09:16 作者:柒染
来源:亿速云 阅读:157

这期内容当中小编将会给大家带来有关什么是微服务架构及分布式事务的解决方案,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

事务的四中隔离级别

read uncommitted 最低级别,任何情况都无法保证
read committed 可避免脏读的发生
repeatable_read 可避免脏读、不可重复读的发生
Serializable可避免脏读、不可重复读、幻读的发生

事务的四个特性

原子性
在计算机程序中,原子性就是对一组数据的操作是一个整体不可分割的意思。
一致性
经典的转账说明,A给B10000块,那么A 账户少了 10000块,B账户多了10000块,不能出现B账户多了10000块,而A账户的金额没有变化
隔离性
还是那转账的例子说明,A给B 转账 10000 ,C给D 转账 50000,AB ,CD 这两组直接是没有关系的,是隔离的。
持久性
持久性就是持久化这样,也没什么可说的。

事务的七种传播行为

propagation_requeired
如果存在一个事务,则支持当前的事务,如果没有事务则开启一个新的事务
propagation_supports
如果存在一个事务,支持当前事务,如果没有事务,则非事务的执行,但是对于事务同步的事务管理器,propagation_supports 
与不使用事务有少许不同
propagation_mandatory
如果存在一个事务,支持当前的事务,如果没有一个活动的事务,则抛出异常
propagation_requires_new
总是开启一个新的事务,如果一个事务已经存在,则将这个存在的事务挂起
propagation_never
总是非事务地执行,如果存在一个活动事务,则抛出异常
propagation_not_supported
总是非事务的执行,并挂起任何存在的事务
propagation_nested
如果一个活动的事务存在,则运行在一个嵌套的事务中,如果没有活动事务,则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行

分布式事务

  1. 分布式事务是在分布架构,微服务的架构下出现的,分布式事务就是将多个节点的事务看成一个整体处理。

  2. 分布式事务一般有事务参与者,资源服务器,事务管理器等组成

  3. 分布式事务出现的场景有哪些 eg. 下订单,减库存,支付

  4. 分布式事务强调的不是事务,它依赖于每个单点的事务机制,它强调的是事务的分布式。到底如何解决分布式事务

实现思路

两段式事务 2PC

什么是微服务架构及分布式事务的解决方案

看图,首先是一个事务管理器,第一个阶段事务管理器先给两个资源管理器发送 prepare 命令,如果两个资源管理器的其中一个没有ready, 那么就要等待了,等两个资源管理器都给事务管理器回复 ready 命令,那么第一个阶段就完事了;接下来进入第二个阶段,事务管理器给两个资源管理器发送 commit 命令,如果两个资源管理器都接收到命令并提交了 committed
那么事务这一组事务OK,但是如果其中一个没有 committed ,那就出问题了。这个2PC 的分布式事务还有其他诸多的问题。

我们来看一下 3PC

2PC 和 3PC 在正式分布式系统中一般不会使用

基于XA 的分布式事务

什么是微服务架构及分布式事务的解决方案

xa 的分布式事务是 2PC 的演进而来。

基于消息的一致性方案

什么是微服务架构及分布式事务的解决方案
TCC补偿性事务

T try ,C confirm ,C cancel
中文简单解释就是 : 尝试执行,确认操作,取消操作

什么是微服务架构及分布式事务的解决方案

假如上图的服务A 是扣减库存,服务B 是创建订单,以扣减库存创建订单这一业务流程来说一下 TCC
首先第一步 app 告诉事务协调器要启动一个事务了,然后就调用 try 接口 ,服务A try 接口扣减库存, 服务B 创建订单,最终 app 收到 AB 两个的try 接口的执行结果,如果有一个失败了,app 告诉事务协调器,刚刚这个事务失败了,你调用 Cancel 接口吧;如果两个都成功了,那么 app 告诉事务协调器调用 Confirm 接口

TCC的核心思想是资源,最核心的就是 在 Try 阶段,一定要把资源做好预留(加锁,加版本号,加分布式锁等方式,先把资源给占着),为什么一定要预留呢,不预留的话,在 Cancel 阶段就无法补偿了,也就违背了TCC设计的初衷。如果对于资源的掌控力度不够,不建议使用TCC,如果资源没办法做预留,没有乐观锁,没有状态等字段,没法预留也就没法用TCC

tcc 补偿性 和 基于 消息的分布式事务 表

上述就是小编为大家分享的什么是微服务架构及分布式事务的解决方案了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 微服务架构应该这么理解(微服务架构详解)
  2. 微服务架构及分布式事务解决方案

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

微服务

上一篇:vue-automation是什么

下一篇:加速Python编程的小技巧有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》