![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
中间件源码
野生的程序员
这个作者很懒,什么都没留下…
展开
-
Seata源码解析7——事务协调者的启动(5)
####前言终于到了Server启动的最后一个组件,DefaultCoordinator了 。这是一个默认的事务协调者TC。DefaultCoordinator继承了很多个接口和抽象类,拥有非常大而全的能力。TCInboundHandler接口,里面定义了各种handler,主要用于处理事务协调过程中的各种请求。例如:全局事务开启的请求、全局事务提交的请求、全局事务回滚的请求。Trans...原创 2020-01-18 20:02:22 · 1830 阅读 · 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 · 1215 阅读 · 0 评论 -
Seata源码解析4——事务协调者的启动(2)
前言我们在上一篇文章中,讲解了协调者启动的总体流程,也讲解了参数解析的实现。这一篇文章中,我们就要讲第二步,metrics的初始化。首先我们会介绍一下metrics初始化的过程,然后直接把整个metrics模块讲清楚。内容较多。初始化metricsmetrics的初始化,使用了MetricsManager。我们常见的"懒汉单例"初始化方式有:枚举、双检锁、静态内部类等。MetricsMana...原创 2019-12-24 23:18:59 · 1068 阅读 · 0 评论 -
Seata源码解析3——事务协调者的启动(1)
前言事务协调者主要负责管理整个分布式事务,每个节点的分支的本地事务在执行之前,都会在事务协调者上注册,本地事务执行结束后,还会向协调者汇报。当事务需要提交或回滚时,也协调者负责推送给各个RM。就现在的协调者代码来看,如果使用文件存储过程信息,会存在单点问题。如果使用数据库存储,所有状态保存在数据库上,则最后单点问题会落到数据库上。协调者总体架构整个协调者模块可以分为以下几大部分:协调者...原创 2019-12-08 14:56:57 · 958 阅读 · 0 评论 -
Seata源码解析2 —— SPI扩展
前言我们平时使用Spring时,由Spring来管理类,Seata没有依赖Spring,因此它自己做了一套SPI机制,用于类的管理。由于Seata里面一个接口有多个实现类,如配置中心就支持consul、etcd3、nacos等。这些实现类都继承了同一个接口,在运行时获取某一个实现类,就需要使用到SPI扩展点了。使用方式EnhancedServiceLoader类中有load方法和loadF...原创 2019-11-24 15:24:26 · 1644 阅读 · 2 评论 -
分布式事务(三)—Seata AT模式
前言我们在之前所介绍的一些分布式事务的理论,是需要通过具体的框架工程化的,这样才能在我们日常工作中使用。常见的开源分布式事务框架很多,比如: Seata、EasyTransaction等等。我们在这篇文章将会介绍阿里开源的分布式事务框架Seata。Seata这个分布式事务框架支持有多种模式,如: AT、TCC、SAGA、XA。除了AT,后面三种分布式事务模式的大致流程,我们在之前的文章中有介...原创 2019-11-17 21:11:25 · 7119 阅读 · 4 评论 -
Seata源码解析 —— 项目结构
前言我们后续解析Seata源码都是基于版本0.9.0,这个是笔者写这篇源码解析时候最新的一个tag。Seata的源码其实非常简单,后续我们会从整个服务启动、服务发现、配置加载等开始,串联起AT、TCC等事务模式,把这些过程的所有源码做一个解析。这篇文章,我们首先来了解一下Seata项目的总体概况。项目结构Seata包含的模块比较多,整个的模块划分比较清晰,很容易理解。所有模块的纯代码量加起...原创 2019-11-17 21:09:20 · 5028 阅读 · 1 评论