分布式事务 TCC-Transaction 源码解析 —— 调试环境搭建
时间:2022-05-02
本文章向大家介绍分布式事务 TCC-Transaction 源码解析 —— 调试环境搭建,主要内容包括1. 依赖工具、2. 源码拉取、3. 初始化数据库、4. 启动 capital 项目、5. 启动 redpacket 项目、6. 启动 order 项目、666. 彩蛋、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
本文主要基于 TCC-Transaction 1.2.3.3 正式版
- 1. 依赖工具
- 2. 源码拉取
- 3. 初始化数据库
- 4. 启动 capital 项目
- 5. 启动 redpacket 项目
- 6. 启动 order 项目
- 666. 彩蛋
1. 依赖工具
- Maven
- Git
- JDK
- MySQL
- IntelliJ IDEA
2. 源码拉取
从官方仓库 https://github.com/changmingxie/tcc-transaction.git Fork
出属于自己的仓库。为什么要 Fork
?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。?
使用 IntelliJ IDEA
从 Fork
出来的仓库拉取代码。拉取完成后,Maven
会下载依赖包,可能会花费一些时间,耐心等待下。
本文基于 master-1.2.x
分支。
3. 初始化数据库
官方提供了两个 Demo 项目例子:
- tcc-transaction-dubbo-sample
- tcc-transaction-http-sample
考虑到不是所有所有同学都使用过 Dubbo 服务化框架,我们以 tcc-transaction-http-sample 项为例子。
打开 tcc-transaction-http-sample/src/main/dbscripts 目录,有四个 SQL 脚本文件:
-
create_db_cap.sql
:tcc-transaction-http-capital 项目数据库初始化脚本。 -
create_db_ord.sql
:tcc-transaction-http-order 项目数据库初始化脚本。 -
create_db_red.sql
:tcc-transaction-http-redpacket 项目数据库初始化脚本。 -
create_db_tcc.sql
:tcc-transaction 底层数据库初始化脚本。
笔者使用 Navicat 进行数据库脚本执行。使用方式为:Navicat 菜单 Connection -> Execute SQL File,选择脚本文件,逐个执行。
目前数据库脚本未使用 USE
语句选择对应数据库,每个脚本都需要进行添加。以 create_db_cap.sql
举例子:
CREATE DATABASE `tcc_cap` /*!40100 DEFAULT CHARACTER SET utf8 */;
-- 新增 USE
USE `tcc_cap`;
4. 启动 capital 项目
- 修改项目下
jdbc.properties
文件,填写成你的数据库地址。 - 使用 IDEA 配置 Tomcat 进行启动。这里要注意下:
// appcontext-service-provider.xml <bean id="httpServer" class="org.springframework.remoting.support.SimpleHttpServerFactoryBean"> <property name="contexts"> <util:map> <entry key="/remoting/CapitalTradeOrderService" value-ref="capitalTradeOrderServiceExporter"/> <entry key="/remoting/CapitalAccountService" value-ref="capitalAccountServiceExporter"/> </util:map> </property> <property name="port" value="8081"/> </bean>
- 默认开启 8081 端口提供接口服务。所以配置 Tomcat 的端口不能再使用 8081,避免冲突。例如,笔者使用 18081。
- 访问
http://127.0.0.1:18081/
,看到 "hello tcc transacton http sample capital",代表项目启动完成。18081
为你填写的 Tomcat 端口。
5. 启动 redpacket 项目
同 tcc-transaction-http-capital 项目。
6. 启动 order 项目
- 修改项目下
jdbc.properties
文件,填写成你的数据库地址。 - 使用 IDEA 配置 Tomcat 进行启动。
- 访问
http://127.0.0.1:8080/
,看到 "sample 说明...",代表项目启动完成。8080
为你填写的 Tomcat 端口。 - 点击 [商品列表链接] -> [购买] -> [支付],如果看到 "支付成功" 或者 "支付失败",恭喜你?,你已经成功搭建完你的调试环境。愉快的开始玩耍把。
666. 彩蛋
调试环境搭建是阅读源码的第一步,如果你碰到无法搭建成功的情况,请给笔者公众号( 芋道源码 )留言。笔者会给你 1:1 的高级( 搞基 )支持。
另外这是一个系列文,本系列更新 TCC-Transaction ,下一个系列更新 ByteTCC 。嗨皮不?!
道友,赶紧上车,分享一波朋友圈!
- Maven 核心原理解析(3)
- String中的null,以及String s;等区别详解
- Shell编程——Shell中的数学运算
- 如何利用微信监管你的TF训练?
- python 安装spark_Spark环境搭建 (Python)
- MongoDB触发oom-killer的简单处理(一)(r7笔记第54天)
- int与integer的区别
- java 自动装箱与拆箱
- python读取文件——python读取和保存mat文件
- python 利用递归实现全排列
- java中 == 与 equal 的区别
- python基础知识——字符串
- python 实现数据降维推荐系统(附Python源码)
- MYSQL数据导出与导入,secure_file_priv参数设置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MyBatis为了解决二级缓存脏读问题,究竟做了那些骚操作!
- PAT (Basic Level) Practice (中文)1009 说反话
- PAT (Basic Level) Practice (中文)1011 A+B 和 C
- PAT (Basic Level) Practice (中文)1013 数素数
- PAT (Basic Level) Practice (中文)1012 数字分类
- PAT (Basic Level) Practice (中文)1016 部分A+B
- PAT (Basic Level) Practice (中文)1086 就不告诉你
- PAT (Basic Level) Practice (中文)1061 判断题
- 使用IDEA写Python之pytest环境搭建及第一个程序编写
- PAT (Basic Level) Practice (中文)1026 程序运行时间
- PAT (Basic Level) Practice (中文)1091 N-自守数
- PAT (Basic Level) Practice (中文)1007 素数对猜想
- PAT (Basic Level) Practice (中文)1019 数字黑洞
- PAT (Basic Level) Practice (中文)1022 D进制的A+B
- 记一次线上商城系统高并发的优化