202108-26 浅谈Java实现分布式事务的三种方案 目录一、问题描述二、分布式事务2.1、什么是分布式系统2.2、什么是事务2.3、什么是本地事务2.4、什么是分布式事务三、如何进行分布式事务控制3.1、CAP理论3.2、分布式系统如果兼顾CAP四、分布式事务一致性解决方案4.1、两阶段提交协议(2PC)4.2、事务补偿TCC4.3、消息队列实现最终一致性一、问题描述用户支付完成会将支付状态及订单状态保存在订单数据库中,由订单服务去维护订单数据库。由库存服务去维护库存数据库的信息。下图是... 继续阅读 >
202107-22 springboot整合rocketmq实现分布式事务 目录1执行流程2工程2.1pom2.2application.yml2.3TransactionListenerImpl2.4SpringTransactionProducer2.5SpringTxConsumer2.6ProducerController2.7RocketApplication3测试3.1正常消费测试3.2回查代码测试1执行流程(1)发送方向MQ服务端发送消息。(2)MQServer将消息持久化成功之后,向发送方ACK确认消息已经发送成功,此时消息为半消息。(3)发送方开始执行本地事务逻辑。(4)发送方根据本地事务执行结果向M... 继续阅读 >
202105-23 详解Java TCC分布式事务实现原理 概述之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用。所以这篇文章,就用大白话+手工绘图,并结合一个电商系统的案例实践,来给大家讲清楚到底什么是TCC分布式事务。业务场景介绍咱们先来看看业务场景,假设你现在有一个电商系统,里面有一个支付订单的场景。那对一个订单支付之后,我们需要做下面的步骤:更... 继续阅读 >
202012-07 Springcloud seata分布式事务实现代码解析 Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。本篇不涉及其原理,只用代码构建项目简单试用一下其回滚的机制。大致上seata分为TC,TM,RM三大构建成整体。它们之间的包含关系如下。即一(xid主键编码,记录信息)带三(TC,TM,RM)下面之间构建项目进行测试。1.下载seata并解压,然后改动配置文件。http://seata.io/zh-cn/blog/download.html官网下载。解压之后到conf中修改file和registry文... 继续阅读 >
202012-04 深入理解PHP+Mysql分布式事务与解决方案 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元;事务的ACID特性事务应该具有4个属性:原子性、一致性、隔离性、持续性原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个... 继续阅读 >
202010-10 详解SpringBoot基于Dubbo和Seata的分布式事务解决方案 1.分布式事务初探一般来说,目前市面上的数据库都支持本地事务,也就是在你的应用程序中,在一个数据库连接下的操作,可以很容易的实现事务的操作。但是目前,基于SOA的思想,大部分项目都采用微服务架构后,就会出现了跨服务间的事务需求,这就称为分布式事务。本文假设你已经了解了事务的运行机制,如果你不了解事务,那么我建议先去看下事务相关的文章,再来阅读本文。1.1什么是分布式事务对于传统的单体应用而言,实现本地事... 继续阅读 >