seata
野生的程序员
这个作者很懒,什么都没留下…
展开
-
Seata源码解析9——数据源(1)
1前言之前我们分析了GlobalTransactional注解的整个生态,但是一些细节性的逻辑还没有深入去看,例如:数据源代理、各种Client的初始化、模板方法等。在这一篇里面,我们会了解一下在上一篇中没有讲完的数据源代理。数据源代理是非常重要的一个环节。我们知道,在分布式事务运行过程中,很多undo log等的记录、资源的锁定等,都是用户无感知的,因为这些操作都在数据源的代理中完成了。2...原创 2020-04-12 11:13:52 · 1795 阅读 · 3 评论 -
Seata源码解析8——GlobalTransactional注解
####前言之前我们过了一遍独立服务:事务协调者(TC)的部分源码,光看源码还是比较难深入理解的。后面我们直接从一个事务的流程来讲,把整个流程中用到的源码都过一遍。整个事务开始之前,肯定就要从事务注解@GlobalTransactional开始了。在讲注解的时候,我们会过一遍Spring AOP实现原理。####关系总览和GlobalTransactional相关的有GlobalTran...原创 2020-02-12 22:55:59 · 29570 阅读 · 4 评论 -
Seata源码解析7——事务协调者的启动(5)
####前言终于到了Server启动的最后一个组件,DefaultCoordinator了 。这是一个默认的事务协调者TC。DefaultCoordinator继承了很多个接口和抽象类,拥有非常大而全的能力。TCInboundHandler接口,里面定义了各种handler,主要用于处理事务协调过程中的各种请求。例如:全局事务开启的请求、全局事务提交的请求、全局事务回滚的请求。Trans...原创 2020-01-18 20:02:22 · 1820 阅读 · 0 评论 -
Seata源码解析6——事务协调者的启动(4)
前言上一篇文章中,我们讲解了启动中的RpcServer类。这个类的顶级父类AbstractRpcRemoting是一个抽象类,封装了Netty的各种能力。除了RpcServer的直接父类AbstractRpcRemotingServer继承了它,还有一个AbstractRpcRemotingClient类也继承了它。在这一篇里,我们会继续把这个Client的抽象类也讲解了。另外,RpcServ...原创 2020-01-04 22:36:47 · 704 阅读 · 0 评论 -
Seata源码解析5——事务协调者的启动(3)
前言我们在上一小节中介绍了Metric的实现原理,本小节我们继续介绍后面的流程,首先我们回顾一下协调者的启动流程1. 解析传入的参数配置2. 初始化metrics3. 初始化一个RpcServer,其实就是一个netty的server,但并不马上start4. 初始化UUID生成器5. 初始化Session管理器6. 初始化协调者模块7. 协调者作为handler设置到netty ...原创 2019-12-29 11:59:01 · 1211 阅读 · 0 评论 -
Seata源码解析4——事务协调者的启动(2)
前言我们在上一篇文章中,讲解了协调者启动的总体流程,也讲解了参数解析的实现。这一篇文章中,我们就要讲第二步,metrics的初始化。首先我们会介绍一下metrics初始化的过程,然后直接把整个metrics模块讲清楚。内容较多。初始化metricsmetrics的初始化,使用了MetricsManager。我们常见的"懒汉单例"初始化方式有:枚举、双检锁、静态内部类等。MetricsMana...原创 2019-12-24 23:18:59 · 1060 阅读 · 0 评论