分布式事务处理方案及分布式锁相关

本文偏理论

一、事务处理

1、事务处理的四个特性ACID

Atomicity 原子性:

对于数据库的修改,全部执行or全部不执行

Consistency 一致性:

Isolation 隔离性 :

亦称为串行化,防止事务间操作混淆,需要串行化或者序列化请求,使得在同一时间仅有一个请求用于同一数据

Durability 持久性:

分布式事务处理方案及分布式锁相关

2、本地事务处理

Spring注解@Transactional

使用@Transactional,使用aop(面向切面)的方式进行管理,可使用isolation配置事务隔离级别,我的理解是Spring基于单体服务模式的本地事务处理,并不是分布式的处理方式

3、分布式事务解决方案

应对场景:

一个事务有多个步骤组成,涉及跨服务(应用)或者跨数据库的事务场景,大致可分为三类场景:同服务跨库场景、跨服务场景、混合式场景
在这里插入图片描述

如客户下单,涉及订单服务、库存服务、支付服务、积分服务,任何一步失败,都涉及相关事务的处理

处理逻辑:

强一致性(设计复杂)、最终一致性(使用较多)

解决方案:

业务设计原则:允许空补偿 、幂等性、防悬挂

*空补偿:*Cancel执行时,Try未执行,事务分支的Cancel操作需要判断出Try未执行,这时需要忽略Cancel中的业务数据更新,直接返回

*悬挂:*Try执行时,Cancel已执行完成,事务分支的Try操作需要判断出Cancel一致性,这时需要忽略Try中的业务数据更新,直接返回

(1)TCC模式

补偿型事务(try confirm cancel)

在这里插入图片描述

(2)Saga模式

补偿型事务,但是它没有 try 阶段,而是把分布式事务看作一组本地事务构成的事务链
在这里插入图片描述

(3)基于消息的分布式事务

对业务侵入较低,最终一致性的解决方案

对消息中间件要求较高,且普通消息不能支持,需要中间件支持事务型消息(RocketMq)
在这里插入图片描述

或者通过维护 本地消息表来实现
在这里插入图片描述

二、分布式锁

应对场景:

集群模式下,一个方法或属性在高并发情况下的同一时间只能被同一个线程执行

实现方式:

1、基于数据库实现

2、基于redis实现

3、zookeeper



参考文档:
分布式事务解决方案
https://mp.weixin.qq.com/s/2AL3uJ5BG2X3Y2Vxg0XqnQ
分布式锁的三种实现方式
https://cloud.tencent.com/developer/article/1628536

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值