![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式事务
Anbang713
这个作者很懒,什么都没留下…
展开
-
分布式事务:解决方案之最大努力通知实战
1. 业务说明下面我们通过RocketMQ中间件实现最大努力通知型分布式事务来模拟充值过程。我们有账户系统和充值系统两个微服务,其中账户系统对应的数据库是bank1,其中包括一条张三账户记录。充值系统的数据库使用pay数据库,记录了账户的充值记录。业务流程图如下:2. 开发环境数据库:MySQL-5.6微服务框架:spring-boot-2.2.2.RELEASE、spring-cloud-Hoxton.SR1、rocketmq-spring-boot-2.0.22.1 启动程序源码地址:原创 2020-08-30 19:35:58 · 463 阅读 · 0 评论 -
分布式事务:解决方案之最大努力通知理论
常见的分布式事务四大解决方案:2PC、TCC、可靠消息最终一致性、最大努力通知。前三种解决方案我们都分别从理论和实战两个维度做了讲解。今天我们来说说最大努力通知这个解决方案的理论部分。1. 什么是最大努力通知先来看看下面这个充值的例子:交互流程如下:(1)账户系统调用充值系统接口发起支付请求。(2)充值系统完成支付处理向账户系统发起充值结果通知。若通知失败,则充值系统按策略进行重复通。(3)账户系统接收到充值结果通知修改充值状态。(4)账户系统未接收到通知会主动调用充值系统的接口查询充值结果原创 2020-08-27 22:00:24 · 418 阅读 · 0 评论 -
分布式事务:解决方案之可靠消息最终一致性实战
在《分布式事务:解决方案之可靠性消息最终一致性理论》中我们说到可靠消息最终一致性主要有两个解决方案:一个是本地消息表+MQ;一个是RocketMQ事务消息。今天我们重点演示一下第二个方案的实现细节。1. 业务说明下面我们通过消息中间件(RocketMQ)实现分布式事务来模拟两个账户的转账交易过程。交易过程是:张三给李四转账指定金额。2. 开发环境数据库:MySQL-5.6微服务框架:spring-boot-2.2.2.RELEASE、spring-cloud-Hoxton.SR1、rocketm原创 2020-08-24 21:06:50 · 479 阅读 · 1 评论 -
分布式事务:解决方案之可靠消息最终一致性理论
1. 什么是可靠消息最终一致性可靠消息最终一致性:是指当事务发起方执行完成本地事务后发出一条消息,事务参与方(消息消费者)一定能够接收消息并处理成功,即强调的是只要消息发给事务参与方最终事务要达到一致。该方案通常是利用消息中间件完成,如下图:事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务发起方和消息中间件之间,事务参与方(消息消费方)和消息中间件之间都是通过网络通信,由于网络通信的不确定性会导致分布式事务问题。因此可靠消息最终一致性方案要解决以下几个问题:原创 2020-08-21 21:48:51 · 337 阅读 · 0 评论 -
分布式事务:解决方案之TCC实战
目前市场上的TCC框架有很多,比如以下几种(以下数据采集日为2020年07月05日):名称地址star数量tcc-transactionhttps://github.com/changmingxie/tcc-transaction4785Hmilyhttps://github.com/yu199195/hmily2835ByteTCChttps://github.com/liuyangming/ByteTCC2408EasyTransactionhtt原创 2020-08-19 20:22:05 · 1016 阅读 · 1 评论 -
分布式事务:解决方案之TCC理论
TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认Confirm、撤销Cancel。Try操作做业务检查及资源预留,Confirm做业务确认操作,Cancel实现一个与Try相反的操作即回滚操作。TM首先发起所有的分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所有分支事务的Cancel操作,若try操作全部成功,TM将会发起所有分支事务的Confirm操作,其中Confirm/Cancel操作若执行失败,TM会进行重试原创 2020-08-15 08:49:50 · 637 阅读 · 2 评论 -
分布式事务:解决方案之2PC实战
说完《分布式事务:解决方案之2PC理论》,我们现在就要在理论的基础上实践一把。1. 业务说明下面我们通过Seata中间件实现分布式事务来模拟两个账户的转账交易过程。交易过程是:张三给李四转账指定金额。2. 开发环境数据库:MySQL-5.6微服务框架:spring-boot-2.2.2.RELEASE、spring-cloud-Hoxton.SR1、spring-cloud-alibaba-2.1.0.RELEASESeata服务端(TC):1.1.0。(下载地址:https://github原创 2020-08-12 20:36:52 · 1122 阅读 · 2 评论 -
分布式事务:解决方案之2PC理论
现在我们了解了《分布式事务:三个概念》和《分布式事务:两个理论》,以这些为基础。针对不同的分布式场景,业界常见的有四大解决方案:2PC、TCC、可靠消息最终一致性、最大努力通知。今天我们先说说2PC这个解决方案。1. 什么是2PC2PC即两阶段提交协议,是将整个事务流程分为两个阶段:准备阶段(Prepare phase)、提交阶段(commitphase),2是指两个阶段,P是指准备阶段,C是指提交阶段。整个事务过程由 事务管理器(TM:Transaction Manager) 和 事务参与者(Re原创 2020-08-01 10:02:23 · 401 阅读 · 0 评论 -
分布式事务:两个理论
说完分布式事务的三个概念,我们再来说说分布式事务中的两个理论。1. CAP理论1.1 理解CAPCAP是 Consistency、Availability、Partition tolerance三个词语的缩写,分别表示一致性、可用性、分区容忍性。为了方便对CAP理论的理解,我们结合电商系统中的一些业务场景来理解CAP。如下商品信息管理的执行流程图:整体执行流程如下:(1)商品服务请求主数据库写入商品信息。(2)主数据库向商品服务响应写入成功。(3)商品服务请求从数据库读取商品信息。1.原创 2020-07-29 21:01:23 · 296 阅读 · 0 评论 -
分布式事务:三个概念
作为分布式事务专题的开篇,我们先来聊一聊跟事务相关的三个概念:事务、本地事务、分布式事务。1. 事务什么是事务?简单来说就是在一个有多个小任务的大任务中,所有的小任务要么全部成功,要么全部失败。也就是不会有部分成功,部分失败的情况存在。2. 本地事务本地事务通常是指利用数据库本身的事务特性来实现的事务,因此我们也称之为数据库事务。说到本地事务,不得不提到它的四大特性:(1)A(原子性):构成事务的所有操作,要么全部执行成功,要么全部不执行,不可能出现部分成功部分失败的情况。(2)C(一致性):在原创 2020-07-26 10:37:25 · 319 阅读 · 0 评论