分布式事务
分布式事务源码剖析
攻城狮Luke(刘健彬)
在深圳某IOT企业任职技术专家,擅长的技术领域包括Spring Cloud、Spring Cloud Alibaba、微服务架构、Docker、Kubernetes、分布式事务、高并发多线程、消息队列、数据库、数据结构与算法、网络数据安全、JVM、DevOps等,拥有丰富的互联网一线开发与架构经验。开源分布式事务框架milo作者,CSDN知名博主。
展开
-
Milo源码解析(六)
解析Confirm阶段回到InitiatorMiloTransactionHandler,当try阶段执行完成之后,此时整个事务是处于中间状态的,我们需要做就是从此前保存的事务日志中获取到参与者的目标类和方法,从而执行对应的confirm方法,同样在confirm执行的阶段需要全部成功,失败或者部分失败都不算完成。进入到confirmPhase方法,更新事务日志将阶段修改为CONFIRMIN...原创 2019-11-04 15:34:02 · 590 阅读 · 3 评论 -
Milo源码解析(五)
深入解析Try阶段上一篇博客介绍了InitiatorMiloTransactionHandler是如何处理事务发起者发起的调用,try阶段完成后执行confirmPhase,否则执行cancelPhase,在解析这两个方法之前我们先再回到tryPhase方法里面看一下,milo框架当创建完事务日志(READY阶段)并且绑定到当前线程之后调用了pjp.proceed(),执行到这里就会进入到pay...原创 2019-10-29 13:41:12 · 1148 阅读 · 0 评论 -
Milo源码解析(四)
拦截事务方法Milo框架在执行完初始化工作之后,开始等待事务请求,并且拦截该方法,拦截的方法前面已经提到过就是带注解@MiloTCC的方法。这其中拦截方法主要是通过spring的AOP方面的内容。回到我们的项目源码中来,在milo-core模块中,可以找到拦截器AbstractMiloTransactionAspect这个抽象类可以看到拦截的切入点正是@MiloTCC注解,拦截之后交给Mi...原创 2019-10-21 15:46:38 · 946 阅读 · 0 评论 -
Milo源码解析(三)
Milo的初始化上一篇文章我们已经介绍了Milo里面的测试样例,并且执行了测试样例,得到了我们想要的结果,订单服务、库存服务和账户服务数据保持一致。细心的朋友会发现我们项目引入的milo框架会在application.yml配置的milo-tcc数据库参数对应的库里面生成对应的事务日志表。表的名称为milo_{model-name}_log,这个model-name就是applicatio...原创 2019-10-18 09:54:35 · 787 阅读 · 0 评论 -
Milo源码解析(二)
引入Milo框架在样例工程中保护了三个微服务模块cloud-order、cloud-account、cloud-stock。这三个模块模拟了具有分布式事务场景的下单场景,用户购买商品下单,生成订单,接着扣减用户的账号金额,最后扣除商品的库存。由于实在分布式环境,三个微服务拥有自己独立的数据库,这使得如果没有处理号这种分布式业务场景,很容易就会出现三个微服务数据不一致的情况,最严重的应该就是订单没...原创 2019-10-17 10:53:31 · 1452 阅读 · 2 评论 -
Milo源码解析(一)
分布式事务框架MiloMilo是一个分布式事务TCC模式的解决方案,目前已经发布1.0版本,可以在开源中国上面搜索得到。TCC模式下的分布式事务是所有分布式事务解决方案中实时性要求最高的,同时也是对业务开发成本要求最高的。所以TCC模式会在要求实时性较高的分布式事务场景中使用,例如订单支付这样的场景。...原创 2019-10-16 16:53:57 · 2353 阅读 · 0 评论 -
分布式事务(1)四种解决方案
简述分布式事务指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务。解决方案在分布式系统中,要实现分布式事务,无外乎那几种解决方案。一、两阶段提交(2PC)两阶段提交(Two-phase Commit,2PC),通过引入协调者(Coordinator)来协调参与者的行为,并最终决定这些参与者是否要真...转载 2019-08-27 11:44:50 · 430 阅读 · 0 评论 -
分布式事务(2)基础理论
这篇文章将介绍什么是分布式事务,分布式事务解决什么问题,对分布式事务实现的难点,解决思路,不同场景下方案的选择,通过图解的方式进行梳理、总结和比较。相信耐心看完这篇文章,谈到分布式事务,不再只是有“2PC”、“3PC”、“MQ的消息事务”、“最终一致性”、“TCC”等这些知识碎片,而是能够将知识连成一片,形成知识体系。1 什么是事务介绍分布式事务之前,先介绍什么是事务。事务的具体定...转载 2019-09-05 09:29:08 · 539 阅读 · 0 评论 -
分布式事务(3)实现TCC的基础技术
概述通过前面的文章介绍,我们已经知道了分布式事务的几种常见的解决方案,从我的从业经历来看,大部分的企业采用TCC或者基于消息队列中间件的最终一致性这两种解决方案。本专栏也将重点剖析这两种方案的具体实现,下面我们先来了解一下分布式环境下微服务实现分布式事务TCC方案的一些基础支持技术。我们知道TCC是Try、Confirm和Cancel三个阶段的简称,通过下图我们可以看到TCC方案的具体结构图(...原创 2019-09-06 16:09:50 · 497 阅读 · 0 评论