TX-LCN分布式事务框架开发文档
文档地址:http://www.txlcn.org/zh-cn/docs/start.html
说明
TX-LCN 主要有两个模块,Tx-Client(TC) Tx-Manager™. TC作为微服务下的依赖,TM是独立的服务。
本教程带领大家了解框架的基本步骤,详细配置可参考 dubbo springcloud
一、TM配置与启动
TM的准备环境
- 安装TM需要依赖的中间件: JRE1.8+, Mysql5.6+, Redis3.2+
如果需要手动编译源码, 还需要Git, Maven, JDK1.8+
- 创建MySQL数据库, 名称为: tx-manager
- 创建数据表
CREATE TABLE `t_tx_exception` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`group_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`unit_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`mod_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`transaction_state` tinyint(4) NULL DEFAULT NULL,`registrar` tinyint(4) NULL DEFAULT NULL,`remark` varchar(4096) NULL DEFAULT NULL,`ex_state` tinyint(4) NULL DEFAULT NULL COMMENT '0 未解决 1已解决',`create_time` datetime(0) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
TM下载与配置
- 从历史版本TM下载找到5.0.2.RELEASE的TM, 下载.
- 修改配置信息
spring.application.name=tx-manager
server.port=7970spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tx-manager?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=rootmybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.use-generated-keys=true#tx-lcn.logger.enabled=true
# TxManager Host Ip
#tx-lcn.manager.host=127.0.0.1
# TxClient连接请求端口
#tx-lcn.manager.port=8070
# 心跳检测时间(ms)
#tx-lcn.manager.heart-time=15000
# 分布式事务执行总时间
#tx-lcn.manager.dtx-time=30000
#参数延迟删除时间单位ms
#tx-lcn.message.netty.attr-delay-time=10000
#tx-lcn.manager.concurrent-level=128
# 开启日志
#tx-lcn.logger.enabled=true
#logging.level.com.codingapi=debug
#redis 主机
#spring.redis.host=127.0.0.1
#redis 端口
#spring.redis.port=6379
#redis 密码
#spring.redis.password=
#
给出信息都是默认值
关于详细配置说明见TM配置- application.properties 加载顺序如下:
0、命令行启动参数指定
1、file:./config/(当前jar目录下的config目录)
2、file:./(当前jar目录)
3、classpath:/config/(classpath下的config目录)
4、classpath:/(classpath根目录)
发布的二进制可执行Jar包含一个默认配置文件(也就是4),可按需要覆盖默认配置 - 手动编译TM,简单指引
# git clone https://github.com/codingapi/tx-lcn.git & cd txlcn-tm
# mvn clean package '-Dmaven.test.skip=true'
target文件夹下,即为TM executable jar.
二、TC微服务模块
微服务示例架构
- 服务A作为DTX发起方,远程调用服务B
TC引入pom依赖
<dependency><groupId>com.codingapi.txlcn</groupId><artifactId>txlcn-tc</artifactId><version>5.0.2.RELEASE</version>
</dependency><dependency><groupId>com.codingapi.txlcn</groupId><artifactId>txlcn-txmsg-netty</artifactId><version>5.0.2.RELEASE</version>
</dependency>
TC开启分布式事务注解
在主类上使用@EnableDistributedTransaction
@SpringBootApplication
@EnableDistributedTransaction
public class DemoAApplication {public static void main(String[] args) {SpringApplication.run(DemoDubboClientApplication.class, args);}}
TC微服务A业务方法配置
@Service
public class ServiceA {@Autowiredprivate ValueDao valueDao; //本地db操作@Autowiredprivate ServiceB serviceB;//远程B模块业务@LcnTransaction //分布式事务注解@Transactional //本地事务注解public String execute(String value) throws BusinessException {// step1. call remote service BString result = serviceB.rpc(value); // (1)// step2. local store operate. DTX commit if save success, rollback if not.valueDao.save(value); // (2)valueDao.saveBackup(value); // (3)return result + " > " + "ok-A";}
}
TC微服务B业务方法配置
@Service
public class ServiceB {@Autowiredprivate ValueDao valueDao; //本地db操作@LcnTransaction //分布式事务注解@Transactional //本地事务注解public String rpc(String value) throws BusinessException {valueDao.save(value); // (4)valueDao.saveBackup(value); // (5)return "ok-B";}
}
TC配置信息说明
# 默认之配置为TM的本机默认端口
tx-lcn.client.manager-address=127.0.0.1:8070
TX-LCN分布式事务框架开发文档相关推荐
- M5(项目)-01-尚硅谷谷粒商城项目分布式基础篇开发文档
M5(项目)-01-尚硅谷谷粒商城项目分布式基础篇开发文档 分布式基础篇 一.环境搭建 各种开发软件的安装 虚拟机: docker,mysql,redis 主机: Maven, idea(后端),Vs ...
- LCN分布式事务框架实战
本文来写个LCN分布式事务框架实战例子 文章目录 概述 概述 lcn分布式事务教程https://www.codingapi.com/docs/txlcn-preface/
- LCN分布式事务框架解决分布式事务一致性问题
LCN分布式事务框架 框架介绍 LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果. 核心步骤 创建事务组 是指在事务发起方开始执行业务代码之前先调用TxMana ...
- php 后端 轻量 框架,GitHub - 22cloud/mixphp: 轻量 PHP 框架,基于 Swoole 的常驻内存型 PHP 高性能框架 (开发文档完善)...
高性能 • 轻量级 • 命令行 MixPHP 是什么 MixPHP 秉承 "普及 PHP 常驻内存型解决方案,促进 PHP 往更后端发展" 的理念而创造,采用 Swoole 扩展作 ...
- LCN分布式事务框架
1.LCN是什么 LCN是国产开源的分布式事务处理框架.LCN即:lock(锁定事务单元).confirm(确认事务模块状态).notify(通知事务). 官网:http://www.txlcn.or ...
- Admui 框架开发文档
QQ194633530 基本概述 Admui 的追求的目标是做到开箱即用,无需了解框架内部机制,但是我们也深知一套框架不可能满足所有客户的所有需求,所以我们仍然为您准备了前端的开发文档,以满足部分客户 ...
- 分布式事务(二)LCN分布式事务框架
1. 简介 LCN框架在2017年6月发布第一个版本,目前最新已经达到5.0版本. LCN早期设计时,1.0版本和2.0版本设计步骤如下: 锁定事务单元(Lock) 确认事务模块状态(Confirm) ...
- SpringCloud(7) LCN分布式事务框架入门
官网:http://www.txlcn.org/ LCN原理:https://github.com/codingapi/tx-lcn/wiki/LCN%E5%8E%9F%E7%90%86 入门测试: ...
- SpringCloud - LCN分布式事务框架
官网:http://www.txlcn.org/ LCN原理:https://github.com/codingapi/tx-lcn/wiki/LCN%E5%8E%9F%E7%90%86 入门测试: ...
最新文章
- 寒羽对帝国的理解(通向高手之路)(转)
- 【ArcGIS遇上Python】栅格影像批量除以10000
- sqoop从mysql导入hdfs_3.使用sqoop从mysql 导入数据到hdfs
- jdbc oracle 函数,Oracle系列:(33)JDBC访问Oracle的存储过程和存储函数
- windows测试模式
- 引文工具的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 基于51单片机的指纹考勤机密码锁系统
- protues仿真arduino串口通讯
- mysql如何清空数据库表内容
- 由limits.h看整型范围
- 为何现在欠钱的人,都不爱还钱,太气人了...
- Fwcms模板建站常见问题整理合集解答
- Java毕业设计_基于javaee创新创业实验室管理系统
- 青海大学的计算机专业排名,青海大学王牌专业有哪些及专业排名
- 《windows》win10禁用默认输入法
- IL思路及遇到的问题、解决方法
- 从零入门云计算(1):云计算究竟是个啥?
- java实现第七届蓝桥杯交换瓶子
- Java将Excel文件、Word文件转为PDF
- 树莓派python控制gpio_树莓派的GPIO控制
热门文章
- 【论文解读】SIGIR 2020 | 超越用户embedding矩阵:用哈希对大型用户建模
- 心路历程:「双非」研究生数据分析春招
- 阿里巴巴版来了:“有一个程序媛女友/老婆是什么样的体验?”
- 免费报名丨网易、腾讯、唯品会等100位名企超资深营销增长官,约你闭门“搞事情”...
- linux系统自签发免费ssl证书,为nginx生成自签名ssl证书
- 根据多个条件删除mysql数据
- 了解和使用类库(47)
- 从传统运维到云运维演进历程之软件定义存储(五)下
- 二叉树的六种遍历方法汇总(转)
- 数据库修复Part1:创建自己的测试corrupt数据库