seata项目结构
1. 概述
2. 代码统计
3. Seata 角色
Seata TC(Transaction Coordinator),事务协调者,会接受全局事务的开启、提交、回滚,分支事务的注册。通过它的协调,达到多事务的一致性。Seata TM(Transaction Manager),事务管理器,或者可以理解成事务的发起者,负责向 TC 发起全局事务的开启、提交、回滚。Seata RM(Resource Manager),资源管理器,或者可以理解成事务的参与者,负责向 TC 发起分支事务的注册、提交,接收自 TC 请求的分支事务的提交、回滚。4. seata-common 项目
seata-common 项目,提供 Seata 封装的工具类、异常类等,大概在 2022 行代码左右。可以等到代码调用到的时,在看里面的逻辑。![]()
5. seata-core 项目
seata-core 项目,提供 Seata 封装的 RPC、数据模型、通信消息格式等,大概在 10701 行。![]()
6. seata-config 项目
用于 Seata TC 和 Seata RM 从配置中心,读取配置。seata-config-core 项目,配置的核心实现,默认提供使用 File 存储配置。seata-config-apollo 项目,提供对 Apollo 的接入。seata-config-consul 项目,提供对 Consul 的接入。seata-config-nacos 项目,提供对 Nacos 的接入。seata-config-zk 项目,提供对 Zookeeper 的接入。![]()
7. seata-discovery 项目
用于 Seata TC 注册到注册中心。用于 Seata TM 从注册中心发现 Seata TC 。seata-registry-core 项目,对注册中心的接入的核心实现,默认提供基于 File 实现注册发现。seata-discovery-consul 项目,提供对 Consul 的接入。seata-discovery-eureka 项目,提供对 Eureka 的接入。seata-discovery-nacos 项目,提供对 Nacos 的接入。seata-discovery-redis 项目,提供对 Redis 的接入。seata-discovery-sofa 项目,提供对 SofaRegistry 的接入。seata-discovery-zk 项目,提供对 Zookeeper 的接入。![]()
8. seata-rm 项目
seata-rm 项目,Seata 对 RM 的核心实现,大概在 497 行代码。seata-rm-datasource 项目,Seata 通过对 JDBC 拓展,从而实现对 MySQL 等的透明接入 Seata RM 的实现,大概在 7651 行代码。![]()
9. seata-server 项目
seata-server 项目,Seata 对 TC 的核心实现,提供了事务协调、锁、事务状态、事务会话等功能,大概在 4049 行代码。![]()
10. seata-tm 项目
seata-tm 项目,Seata 对 TM 的实现,提供了全局事务管理,例如说事务的发起,提交,回滚等,大概在 1316 行代码。![]()
11. seata-tcc 项目
seata-tcc 项目,Seata 对 TCC 事务模式的实现,大概在这个项目,可以等看完 Seata 核心逻辑后,在进行来看。未来,Seata 会提供 Saga 事务模式,应该也会是一个子项目。12. seata-spring 项目
seata-spring 项目,Spring 对 Seata 集成的实现,大概在 1019 行代码。例如说,使用 @GlobalTransactional 注解,自动创建全局事务,就是通过 seata-spring 项目来实现的。![]()
13. integration 项目
integration 项目,用于对不同框架的集成,大概在 146 行代码左右。目前提供了对 Dubbo 框架的集成:seata-dubbo 项目,提供对 Apache Dubbo 的接入。seata-dubbo-alibaba 项目,提供对 Alibaba Dubbo 的接入。![]()
seata项目结构的更多相关文章
- 认识ASP.NET 5项目结构和项目文件xproj
ASP.NET 5 在项目结构上做了很大的改变,我们以前熟悉的目录结构与项目文件内容都不太一样了,本篇文章带大家了解 ASP.NET 5 到底跟以前有哪些不一样的地方. 我们先用 Visual Stu ...
- 【完全开源】知乎日报UWP版:项目结构说明、关键源代码解释
目录 说明 项目结构 关键代码 演示视频 说明 上一篇博客将源码放出来了,但是并没有做过多的介绍,所以如果自己硬看可能需要花费很长的时间,尤其这些代码并不是自己写的.项目不算复杂但是也不算简单,这篇文 ...
- Android之什么是Activity和常用的ADB命令以及Android项目结构的认识
总结一下之前学习Android的一些内容 一: Android常用的ADB命令(adb android调试桥) 1.adb devices 查看模拟器设备并重新连接. 2.adb ki ...
- Go项目结构和模块导入
Go项目结构和模块导入 golang项目结构与其他语言类似,但是仍然有一些需要注意的地方. 项目结构 环境配置 go 命令依赖一个重要的环境变量:$GOPATH,它表示GO项目的路径,如下设置 exp ...
- android第一行代码-1.项目结构
0.项目结构 一个简单的android项目结构大致如下 入口就是MainActivity这个类,如果对于一个陌生的项目,最好的办法是看AndroidMainifest.xml,如下 <?xml ...
- Mybatis 复习 Mybatis 配置 Mybatis项目结构
pom.xml文件已经贴在了文末.该项目不使用mybatis的mybatis-generator-core,而是手写Entities类,DaoImpl类,CoreMapper类 其中,Entities ...
- django开发个人简易Blog——构建项目结构
开发之前第一步,就是构造整个的项目结构.这就好比作一幅画,第一步就是描绘轮廓,有了轮廓,剩下的就是慢慢的填充细节.项目结构规划如下图: 项目结构描述: 本项目以fengzhengBlog为根目录. a ...
- 架构系列:ASP.NET 项目结构搭建
我们头开始,从简单的单项目解决方案,逐步添加业务逻辑的约束,从应用逻辑和领域逻辑两方面考虑,从简单的单个项目逐步搭建一个多项目的解决方案.主要内容:(1)搭建应用逻辑和领域逻辑都简单的单项目 (2)为 ...
- Android项目结构 以及体系结构
学习Android平台的人一般对Android的平台的应该有点认识 其它的就不多讲了 Android项目一般由以下几个部分构成 以上是一个简单的Android项目结构目录图 1. src 主要是 源 ...
随机推荐
- linux 能ping通IP但无法解析域名
vi /etc/nsswitch.conf hosts: files dns networks: files 改成: hosts: files dns wins networks: files 最近碰 ...
- PHP基础回顾
变量:声明变量以$开始,变量名可以用中文但是不要用:不能使用特殊字符,比如@,下划线除外:变量名区分大小写.可变变量 $a = b; $b = c; => $$a = c; 理论上$可以无限使 ...
- (转)HTTP请求报文和HTTP响应报文
原地址:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/28/2612910.html HTTP报文是面向文本的,报文中的每一个字段都是一些ASC ...
- 总结JavaScript中浏览器的兼容问题
浅析JavaScript中浏览器的兼容问题 浏览器兼容性问题是在实际开发中容易忽略而又最重要的一部分.我们在讲老版本浏览器兼容问题之前,首先要了解什么是能力检测,它是来检测浏览器有没有这种能力,即判断 ...
- 51 Nod 1085 01背包问题
1085 背包问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2--Wn(Wi为 ...
- TTTTTTTTTTT 400D Dima and Bacteria 细菌 最短路
题意: 题目大意:给出n,m和k,表示有n个细菌,m种仪器和k种细菌,给出k种细菌的数量ci,然后每个细菌按照种类排成一排(所以有第i种细菌的序号从∑(1≤j≤i-1)cj + 1 到∑(1≤j≤i) ...
- [JZOJ6247]【NOI2019模拟2019.6.27】C【计数】
Description n<=200000 Solution 比赛时没做出这道题真的太弟弟了 首先我们从小到大插入数i,考虑B中有多少个区间的最大值为i 恰好出现的次数不太好计算,我们考虑计算最 ...
- eclipse内存溢出 参数配置
http://blog.csdn.net/liuhenghui5201/article/details/50783444
- ZooKeePer总汇
一.什么Zookeeper Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization) ...
- Java 里volatile关键字是什么意思啊?如何使用呢?
一旦一个并发共享变量(类的成员变量.静态成员变量)被 volatile 关键字修饰就具备了可见性(即一个线程修改了一个变量的值对于另一个线程来说是立即可见的)和有序性(即禁止进行指令重排序),实质是在 ...