
分布式事务
文章平均质量分 88
TCC Transaction,Seata
weixin_42073629
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
分布式事务,Seata的演变
背景大家好,今天给大家分享一个在 2022 年出去面试 Java 几乎必问的一个技术,那就是 seata。什么??你才看了第一句话心里有闪现了无数个问号?因为没听说过 seata 这个东西?没关系,为了避免兄弟们出去面试被问到 seata 的时候,一脸蒙圈,我们今天就把这个东西给大家讲明白。既然要给大家讲什么是 seata,那就得先说一下这个东西的定位,这东西就是现在很火的 Spring Cloud Alibaba 里的一个组件,是专门帮助我们解决分布式事务问题的,也就是说,seata 是一转载 2022-04-10 13:54:31 · 254 阅读 · 0 评论 -
Seata AT 模式启动源码分析
从上一篇文章「分布式事务中间件Seata的设计原理」讲了下 Seata AT 模式的一些设计原理,从中也知道了 AT 模式的三个角色(RM、TM、TC),接下来我会更新 Seata 源码分析系列文章。今天就来分析 Seata AT 模式在启动的时候都做了哪些操作。客户端启动逻辑TM 是负责整个全局事务的管理器,因此一个全局事务是由 TM 开启的,TM 有个全局管理类 GlobalTransaction,结构如下:io.seata.tm.api.GlobalTransactionpublic原创 2020-07-17 17:38:17 · 443 阅读 · 0 评论 -
分布式事务中间件Seata的设计原理
在微服务架构体系下,我们可以按照业务模块分层设计,单独部署,减轻了服务部署压力,也解耦了业务的耦合,避免了应用逐渐变成一个庞然怪物,从而可以轻松扩展,在某些服务出现故障时也不会影响其它服务的正常运行。总之,微服务在业务的高速发展中带给我们越来越多的优势,但是微服务并不是十全十美,因此不能盲目过度滥用,它有很多不足,而且会给系统带来一定的复杂度,其中伴随而来的分布式事务问题,是微服务架构体系下必然需要处理的一个痛点,也是业界一直关注的一个领域,因此也出现了诸如 CAP 和 BASE 等理论。在今年年初,阿原创 2020-07-17 17:17:19 · 211 阅读 · 0 评论 -
Fescar 源码走读(3)之分支事务流程
AsyncWorker目前只实现了branchCommit,用于在分支事务提交后异步删除undo sql记录,目前branchrollback接口还没有实现private void doBranchCommits() { if (ASYNC_COMMIT_BUFFER.size() == 0) { return; } Map<String, List<Phase2Conjava>> mappedConjavas = new HashMap原创 2020-06-15 19:44:38 · 177 阅读 · 0 评论 -
Fescar 源码走读(2)之 Fescar 服务端
服务端启动:public static void main(String[] args) throws IOException { RpcServer rpcServer = new RpcServer(WORKING_THREADS); if (args.length > 0) { int port = Integer.parseInt(args[0]); rpcServer.setListenPort(port原创 2020-06-15 19:39:12 · 163 阅读 · 0 评论 -
Fescar 源码走读(1)之业务调用方
先简单走一下主流程(仅做参考,如有错误后续更正)先从GlobalTransactional看起,这个标签是全局事务发起的标志,它是通过GlobalTransactionScanner方法在初始化对象之前自动扫描GlobalTransactional标签,创建相应方法所在类的代理类,intecepter是GlobalTransactionalInterceptorpublic Object invoke(final MethodInvocation methodInvocation) throws原创 2020-06-15 19:36:40 · 189 阅读 · 0 评论 -
GTS 解密 —— GTS的原理、架构与特点
全局事务服务(Global Transaction Service,简称 GTS)是阿里新推出的分布式事务处理方案,对其深入分析的资料相对匮乏。本文的目标是剖析GTS的技术路线,厘清其优势与约束。文章参考了GTS公开的专利、产品文档、相关网页,文章中肯定有不准确的地方,欢迎各位同学拍砖与指正。1. GTS 的目标GTS是一个面向互联网交易场景的分布式事务解决方案。制约分布式事务的三个因素分布式事务是互联网交易场景面临的关键问题之一。不同于搜索、社交、联机分析应用,电子商务、支付是典型的交易场原创 2020-06-15 19:33:11 · 1622 阅读 · 0 评论 -
TCC-Transaction 源码分析 —— 项目实战
1. 概述本文分享TCC 项目实战。以官方 Maven项目tcc-transaction-http-sample为例子(tcc-transaction-dubbo-sample类似 )。建议你已经成功启动了该项目。如果不知道如何启动,可以先查看《TCC-Transaction 源码分析 —— 调试环境搭建》。如果再碰到问题,欢迎加微信公众号(芋道源码),我会一一仔细回复。OK,首先我们简单了解下这个项目。首页 => 商品列表 => 确认支付页 => 支付结...原创 2020-06-14 23:34:46 · 269 阅读 · 0 评论 -
TCC-Transaction 源码分析 —— Dubbo 支持
1. 概述本文分享Dubbo 支持。TCC-Transaction 通过 Dubbo隐式传参的功能,避免自己对业务代码的入侵。可能有同学不太理解为什么说 TCC-Transaction 对业务代码有一定的入侵性,一起来看个代码例子:public interface CapitalTradeOrderService { String record(TransactionContext transactionContext, CapitalTradeOrderDto tradeOrde..原创 2020-06-14 23:22:04 · 267 阅读 · 0 评论 -
TCC-Transaction 源码分析 —— 运维平台
1. 概述本文分享运维平台。TCC-Transaction 提供了相对精简的运维平台,用于查看在《TCC-Transaction 源码分析 —— 事务存储器》提到的事务存储。目前暂时只有两个功能:查看未完成的事务列表 重置事务恢复重试次数运维平台( Maven 项目tcc-transaction-server) 整体代码结构如下:本文自下而上,Dao => Controller => UI 的顺序进行解析实现。你行好事会因为得到赞赏而愉悦同理,开源项目贡献者会因...原创 2020-06-14 20:40:23 · 288 阅读 · 0 评论 -
TCC-Transaction 源码分析 —— 事务恢复
1. 概述本文分享TCC 恢复。主要涉及如下二个 package 路径下的类:org.mengyun.tcctransaction.recover RecoverConfig,事务恢复配置接口 TransactionRecovery,事务恢复逻辑 org.mengyun.tcctransaction.spring.recover: DefaultRecoverConfig,默认事务恢复配置实现 RecoverScheduledJob,事务恢复定时任务 本文涉及到的类关系如..原创 2020-06-14 20:26:26 · 234 阅读 · 0 评论 -
TCC-Transaction 源码分析 —— 事务存储器
1. 概述本文分享事务存储器。主要涉及如下 Maven 项目:tcc-transaction-core:tcc-transaction 底层实现。在 TCC 的过程中,根据应用内存中的事务信息完成整个事务流程。But 实际业务场景中,将事务信息只放在应用内存中是远远不够可靠的。例如:应用进程异常崩溃,未完成的事务信息将丢失。 应用进程集群,当提供远程服务调用时,事务信息需要集群内共享。 发起事务的应用需要重启部署新版本,因为各种原因,有未完成的事务。因此,TCC-Transactio..原创 2020-06-14 20:22:56 · 237 阅读 · 0 评论 -
TCC-Transaction 源码分析 —— TCC 实现
1. 概述本文分享TCC 实现。主要涉及如下三个 Maven 项目:tcc-transaction-core:tcc-transaction 底层实现。 tcc-transaction-api:tcc-transaction 使用 API。 tcc-transaction-spring:tcc-transaction Spring 支持。你行好事会因为得到赞赏而愉悦同理,开源项目贡献者会因为 Star 而更加有动力为 TCC-Transaction 点赞!传送门OK,开始我...原创 2020-06-14 20:09:08 · 584 阅读 · 0 评论 -
TCC-Transaction 源码分析 —— 调试环境搭建
1. 依赖工具Maven Git JDK MySQL IntelliJ IDEA2. 源码拉取从官方仓库https://github.com/changmingxie/tcc-transaction.gitFork出属于自己的仓库。为什么要Fork?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。????使用IntelliJ IDEA从Fork出来的仓库拉取代码。拉取完成后,Maven会下载依赖包,可能会花费一些时间,耐心等待下。本文...原创 2020-06-14 19:47:41 · 199 阅读 · 0 评论 -
Seata 源码分析 —— 项目结构一览
1. 概述本文主要分享Seata 的项目结构。 希望通过本文能让胖友对 Seata 的整体项目有个简单的了解。在拉取 Seata 项目后,我们会发现拆分了好多Maven 项目。是不是内心一紧,产生了恐惧感?不要方,我们就是继续怼。2. 代码统计这里先分享一个小技巧。笔者在开始源码学习时,会首先了解项目的代码量。第一种方式,使用IDEA Statistic插件,统计整体代码量。我们可以粗略的看到,总的代码量在 19878 行。相比 Dubbo 代码量级在...原创 2020-06-14 18:38:34 · 952 阅读 · 0 评论 -
Seata 源码分析 —— 调试环境搭建
0. 介绍2019 年 1 月,阿里巴巴中间件团队发起了开源项目Fescar(Fast & EaSy Commit And Rollback),和社区一起共建开源分布式事务解决方案。Fescar 的愿景是让分布式事务的使用像本地事务的使用一样,简单和高效,并逐步解决开发者们遇到的分布式事务方面的所有难题。Fescar 开源后,蚂蚁金服加入 Fescar 社区参与共建,并在 Fescar 0.4.0 版本中贡献了 TCC 模式。为了打造更中立、更开放、生态更加丰富的分布式事务开源社区,.原创 2020-06-14 18:31:20 · 1692 阅读 · 0 评论 -
Dubbo 分布式事务 Seata 入门
1. 概述在《Seata 极简入门》文章中,我们对 Seata 进行了简单的了解,并完成了 Seata 的部署。而本文,我们将 Dubbo 服务接入 Seata 来实现分布式事务。Seata是阿里开源的一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。注意,考虑到 Nacos 作为注册中心在国内越来越流行,本文将采用 Nacos 作为 Dubbo 的注册中心。友情提示:如果对 Nacos 不了解的胖友,可以参考《Nacos 极简入门》文章。2. AT 模.原创 2020-06-14 18:16:10 · 633 阅读 · 0 评论 -
Spring Cloud Alibaba 分布式事务 Seata 入门
1. 概述在《Seata 极简入门》文章中,我们对 Seata 进行了简单的了解,并完成了 Seata 的部署。Seata是阿里开源的一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。目前,在 Spring Cloud 体系中,我们一般采用两种方式来实现服务的调用:方式一,使用 Dubbo 发布服务,并使用 Dubbo 调用服务 方式二,使用 Spring MVC 提供 API 接口,并使用 Feign 调用服务Seata内置对 Dubbo 和 Feign..原创 2020-06-13 19:21:48 · 903 阅读 · 0 评论 -
Seata 极简入门
1. 概述Seata是阿里开源的一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。1.1 四种事务模式Seata 目标打造一站式的分布事务的解决方案,最终会提供四种事务模式:AT 模式:参见《Seata AT 模式》文档 TCC 模式:参见《Seata TCC 模式》文档 Saga 模式:参见《SEATA Saga 模式》文档 XA 模式:正在开发中...目前使用的流行度情况是:AT > TCC > Saga。因此,我们在学习 Seata 的时候.原创 2020-06-13 19:00:43 · 1575 阅读 · 1 评论 -
Spring Boot 分布式事务 Seata 入门
1. 概述在《芋道 Seata 极简入门》文章中,我们对 Seata 进行了简单的了解,并完成了 Seata 的部署。而本文,我们将纯Spring Boot 应用接入 Seata 来实现分布式事务。Seata是阿里开源的一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。2. AT 模式 + 多数据源示例代码对应仓库:lab-52-multiple-...原创 2020-04-29 00:15:55 · 1596 阅读 · 1 评论 -
分布式事务选型:XA、2PC、TCC、Saga、阿里Seata
微服务兴起的这几年涌现出不少分布式事务框架,比如ByteTCC、TCC-transaction、EasyTransaction以及最近很火爆的Seata。最近刚看了Seata的源码(v0.5.2),借机记录一下自己对分布式事务的一些理解。(3年前这类框架还没成熟,因项目需要自己也写过一个柔性事务框架)。本文分五部分,首先明确分布式事务概念的演变,然后简单说下为什么大家不用XA,第三部分阐述两阶...原创 2020-04-15 21:47:40 · 906 阅读 · 0 评论