1. 概述

在拉取 Seata 项目后,我们会发现拆分了好多 Maven 项目。

2. 代码统计

第一种方式,使用 IDEA Statistic 插件,统计整体代码量。
我们可以粗略的看到,总的代码量在 19878 行。相比 Dubbo 代码量级在10W 级,算起来并不多。
第二种方式,使用 Shell 脚本命令逐个 Maven 模块统计 。
一般情况下,使用 find . -name "*.java"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l 。这个命令只过滤了部分注释,所以相比 IDEA Statistic 会偏多。
当然,考虑到准确性,需要手动 cd 到每个 Maven 项目的 src/main/java 目录下,以达到排除单元测试的代码量。

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项目结构的更多相关文章

  1. 认识ASP.NET 5项目结构和项目文件xproj

    ASP.NET 5 在项目结构上做了很大的改变,我们以前熟悉的目录结构与项目文件内容都不太一样了,本篇文章带大家了解 ASP.NET 5 到底跟以前有哪些不一样的地方. 我们先用 Visual Stu ...

  2. 【完全开源】知乎日报UWP版:项目结构说明、关键源代码解释

    目录 说明 项目结构 关键代码 演示视频 说明 上一篇博客将源码放出来了,但是并没有做过多的介绍,所以如果自己硬看可能需要花费很长的时间,尤其这些代码并不是自己写的.项目不算复杂但是也不算简单,这篇文 ...

  3. Android之什么是Activity和常用的ADB命令以及Android项目结构的认识

    总结一下之前学习Android的一些内容 一:  Android常用的ADB命令(adb android调试桥)      1.adb devices   查看模拟器设备并重新连接. 2.adb ki ...

  4. Go项目结构和模块导入

    Go项目结构和模块导入 golang项目结构与其他语言类似,但是仍然有一些需要注意的地方. 项目结构 环境配置 go 命令依赖一个重要的环境变量:$GOPATH,它表示GO项目的路径,如下设置 exp ...

  5. android第一行代码-1.项目结构

    0.项目结构 一个简单的android项目结构大致如下 入口就是MainActivity这个类,如果对于一个陌生的项目,最好的办法是看AndroidMainifest.xml,如下 <?xml ...

  6. Mybatis 复习 Mybatis 配置 Mybatis项目结构

    pom.xml文件已经贴在了文末.该项目不使用mybatis的mybatis-generator-core,而是手写Entities类,DaoImpl类,CoreMapper类 其中,Entities ...

  7. django开发个人简易Blog——构建项目结构

    开发之前第一步,就是构造整个的项目结构.这就好比作一幅画,第一步就是描绘轮廓,有了轮廓,剩下的就是慢慢的填充细节.项目结构规划如下图: 项目结构描述: 本项目以fengzhengBlog为根目录. a ...

  8. 架构系列:ASP.NET 项目结构搭建

    我们头开始,从简单的单项目解决方案,逐步添加业务逻辑的约束,从应用逻辑和领域逻辑两方面考虑,从简单的单个项目逐步搭建一个多项目的解决方案.主要内容:(1)搭建应用逻辑和领域逻辑都简单的单项目 (2)为 ...

  9. Android项目结构 以及体系结构

    学习Android平台的人一般对Android的平台的应该有点认识 其它的就不多讲了 Android项目一般由以下几个部分构成 以上是一个简单的Android项目结构目录图 1. src  主要是 源 ...

随机推荐

  1. wx小程序知识点(六)

    六.生命周期 (1)onLoad    —— 加载时触发,只调用一次,可用来发送请求绑定数据.获取url中参数 (2)onShow   —— 页面显示时触发,每次显示都会执行,用来获取需要频繁更新的数 ...

  2. Unity3D_(游戏)卡牌01_启动屏界面

      卡牌2D游戏展示 (游戏代码放到  卡牌04_游戏界面  文章最后面~) 游戏项目已托管到github上(里面有个32bit可执行文件) 传送门 规则 开始游戏每张卡牌初始翻开展示 展示几秒后卡牌 ...

  3. x-admin

    https://blog.csdn.net/u014793102/article/details/80316335

  4. C++入门经典-例4.4-循环嵌套之求n的阶乘

    1:代码如下: // 4.4.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  5. 191107Django的Cookie和Session

    Cookie的使用 from django.shortcuts import render,redirect def login(request): print("1",reque ...

  6. spark 笔记 4:Apache Hadoop YARN: Yet Another Resource Negotiator

    spark支持YARN做资源调度器,所以YARN的原理还是应该知道的:http://www.socc2013.org/home/program/a5-vavilapalli.pdf    但总体来说, ...

  7. 第八章 SpringCloud之Feign、Hystrix结合使用

    #这个章节主要是针对Hystrix的使用,因为Feign的章节在上一节已经实现了,整个代码也是在上一个章节的基础上修改的 ##################Hystrix一个简单Demo实现#### ...

  8. Jmeter(七)参数化

    初识Jmeter的时候, 除了感觉安装和配置都很轻量以外, 还有一个最大的感触就是, 翻译真硬啊, 真的够够的! 和他磨合了挺长一段时间之后, 终于开悟了, 这些硬硬的翻译, 其实还是基本靠谱的, 看 ...

  9. robotframework 配置过程中遇到的问题

    现有环境配置:操作系统: Win7 32bitPython 2.7.8Python 3.5.2Pycharm Community Edition 2016.3.2robotframework: 3.0 ...

  10. 自定义配置文件读取产生的“无法添加已属于该配置的 ConfigurationSection”异常解决办法

    最近在编写一个读写自定义配置文件的功能时遇到一个问题,在初始化的时候读入配置显示出来,修改后把配置回存到配置文件,在回存的时候,先移除配置节,再添加,在添加的时候遇到如下的异常: {"无法添 ...