分布式事务LCN搭建

  • 一、分布式事务
    • 1.1、业务场景
  • 二、准备工作(windows环境)
    • 2.1、windows版redis
    • 2.2、一个搭建好的微服务项目
  • 三、搭建lcn分布式事务
    • 3.1、搭建lcn服务端
      • 3.1.1、启动类
      • 3.1.2、pom
      • 3.1.3、配置文件(注册中心选的consul,配置文件配的consul相关)
      • 3.1.3、搭建完成
    • 3.2、搭建lcn客户端
      • 3.2.1、启动类
      • 3.2.2、pom
      • 3.2.3、配置文件
      • 3.2.4、方法
  • 四、测试结果
    • 4.1 说明
    • 4.2 测试结果
  • 五、源码下载地址

一、分布式事务

1.1、业务场景

在springcloud中通过feign调用的方法,不能通过@Transactional(rollbackFor = Exception.class)实现事务回滚

二、准备工作(windows环境)

2.1、windows版redis

2.2、一个搭建好的微服务项目

需要两个简单的服务能够通过feign实现互相调用,能实现数据库数据读写

三、搭建lcn分布式事务

3.1、搭建lcn服务端

3.1.1、启动类

添加注解@EnableTransactionManagerServer

3.1.2、pom

添加Lcn依赖

<dependency><groupId>com.codingapi.txlcn</groupId><artifactId>txlcn-tm</artifactId><version>5.0.2.RELEASE</version>
</dependency>

Mysql数据库驱动

        <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.18</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency>

3.1.3、配置文件(注册中心选的consul,配置文件配的consul相关)

server.port=9001
spring.application.name=lcn-server
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.healthCheckPath=/actuator/healthspring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath*:mapping/*.xml# TM监听IP. 默认为 127.0.0.1
tx-lcn.manager.host=127.0.0.1# TM监听Socket端口. 默认为 ${server.port} - 100
tx-lcn.manager.port=8070# 心跳检测时间(ms). 默认为 300000
tx-lcn.manager.heart-time=300000#  分布式事务执行总时间(ms). 默认为36000
tx-lcn.manager.dtx-time=6000000# 参数延迟删除时间单位ms  默认为dtx-time值
tx-lcn.message.netty.attr-delay-time=${tx-lcn.manager.dtx-time}# 事务处理并发等级. 默认为机器逻辑核心数5倍
tx-lcn.manager.concurrent-level=160# TM后台登陆密码,默认值为codingapi
tx-lcn.manager.admin-key=codingapi# 分布式事务锁超时时间 默认为-1,当-1时会用tx-lcn.manager.dtx-time的时间
tx-lcn.manager.dtx-lock-time=${tx-lcn.manager.dtx-time}#  雪花算法的sequence位长度,默认为12位.
tx-lcn.manager.seq-len=12# 异常回调开关。开启时请制定ex-url
tx-lcn.manager.ex-url-enabled=false# 事务异常通知(任何http协议地址。未指定协议时,为TM提供内置功能接口)。默认是邮件通知
tx-lcn.manager.ex-url=/provider/email-to/***@**.com# 定义事务协调器所在位置。根据具体环境定义其中的IP地址和端口。
tm.manager.url=http://127.0.0.1:8899/tx/manager/# 开启日志,默认为false
tx-lcn.logger.driver-class-name=${spring.datasource.driver-class-name}
tx-lcn.logger.jdbc-url=${spring.datasource.url}
tx-lcn.logger.username=${spring.datasource.username}
tx-lcn.logger.password=${spring.datasource.password}#  redis 的设置信息
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=

3.1.3、搭建完成

访问lcn服务端(ip+端口),出现TxManager后台系统并能登录说明搭建成功
ps:登录密码为codingapi,可以在配置文件中修改

3.2、搭建lcn客户端

3.2.1、启动类

添加事务支持的注解
@EnableDistributedTransaction
@EnableTransactionManagement

3.2.2、pom

添加lcn依赖

<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>

3.2.3、配置文件

tx-lcn.client.manager-address=127.0.0.1:8070
spring.transaction.rollback-on-commit-failure=true

3.2.4、方法

需要分布式事务的方法上添加注解(主方法和feign调用的方法都加上注解)
@LcnTransaction
@Transactional

四、测试结果

4.1 说明

1、搭建好了之后有三个服务,LcnService(LCN的服务端),user1Service(lcn1号客户端),user2Service(lcn2号客户端)
2、user1Service和user2Service都有两个方法,正确添加数据的addUser()和会报错的addUserErr()
3、user2Service通过feign去调用user1Service的方法,然后再调用自身的方法
4、user2Service还有3个单独方法,testSuccess():user1Service和user2Service的正确添加方法;
test():先调用user1Service的正确方法,再调用本身的错误方法;testNormal():和test()方法一样,只是不添加分布式事务的注解

4.2 测试结果

1、testSuccess():两个库都能正常添加数据

2、testNormal():feign调用的添加上了,本地的没添加成功

3、test():feign先添加成功,由于后面出错,被回滚了

user1Service输出的日志

五、源码下载地址

https://download.csdn.net/download/qq_41833449/20326569

LCN分布式事务(Java)相关推荐

  1. SpringCloud(7) LCN分布式事务框架入门

    官网:http://www.txlcn.org/ LCN原理:https://github.com/codingapi/tx-lcn/wiki/LCN%E5%8E%9F%E7%90%86 入门测试: ...

  2. SpringCloud - LCN分布式事务框架

    官网:http://www.txlcn.org/ LCN原理:https://github.com/codingapi/tx-lcn/wiki/LCN%E5%8E%9F%E7%90%86 入门测试: ...

  3. LCN分布式事务框架实战

    本文来写个LCN分布式事务框架实战例子 文章目录 概述 概述 lcn分布式事务教程https://www.codingapi.com/docs/txlcn-preface/

  4. LCN分布式事务框架解决分布式事务一致性问题

    LCN分布式事务框架 框架介绍 LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果. 核心步骤 创建事务组 是指在事务发起方开始执行业务代码之前先调用TxMana ...

  5. LCN分布式事务框架

    1.LCN是什么 LCN是国产开源的分布式事务处理框架.LCN即:lock(锁定事务单元).confirm(确认事务模块状态).notify(通知事务). 官网:http://www.txlcn.or ...

  6. LCN 分布式事务框架

    1.LCN 框架的由来 在设计框架之初的1.0 ~ 2.0的版本时,框架设计的步骤是如下的,各取其首字母得来的LCN命名: 锁定事务单元(lock) 确认事务模块状态(confirm) 通知事务( n ...

  7. LCN分布式事务学习0-分布式事务理论基础

    1. 事务概述 1.1 事务的定义 将一个活动涉及到的所有操作纳入到一个不可分割的执行单元,只要其中任一操作执行失败,都将导致整个执行单元回滚. 简单地说,事务提供一种"要么什么都不做,要么 ...

  8. 分布式事务(二)LCN分布式事务框架

    1. 简介 LCN框架在2017年6月发布第一个版本,目前最新已经达到5.0版本. LCN早期设计时,1.0版本和2.0版本设计步骤如下: 锁定事务单元(Lock) 确认事务模块状态(Confirm) ...

  9. 分布式事务解决方案框架(LCN)

    事务概念 事务特性(ACID) 原子性(A) 所谓的原子性就是说,在整个事务中的所有操作,要么全部完成,要么全部不做,没有中间状态.对于事务在执行中发生错误,所有的操作都会被回滚,整个事务就像从没被执 ...

  10. 分布式事务框架lcn入门demo

    文章目录 简介 实现原理 入门demo 简介 LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果. LCN5.0.2有3种模式,分别是LCN模式,TCC模式,TX ...

最新文章

  1. javascript 常用功能總結
  2. 关于扫描仪——你不知道的秘密
  3. Lambda 表达式到底有何用处?如何使用?
  4. mac 下系统目录权限问题
  5. 开发基于Web的RSS阅读器
  6. leetcode : 基础技巧
  7. 牛客题霸 [最长公共子串]C++题解/答案
  8. React开发(147):开发注意
  9. 解决6410 WINCE6 应用层调用SetSystemPowerState api关机无效的问题
  10. 睡眠音频分割及识别问题(四)--YAMNet简介
  11. 小米无缝切换60hz/90hz/120hz/144hz刷新率!
  12. AndroidStudio安卓原生开发_打包apk安装文件---Android原生开发工作笔记130
  13. 阿里Java开发规范IDEA开发插件
  14. Windows磁盘格式、分区格式及类型
  15. vue实现登录注册模板
  16. python圆形螺旋线_Python Turtle绘制漂亮彩色螺旋线及一闪而过的解决
  17. cesium entity使用
  18. UC浏览器电脑版来了:用了有快感?
  19. 抖音网红是如何推广产品的?
  20. 最大线性无关组-混合颜料

热门文章

  1. 【YOLOX训练部署】YOLOX训练自己的VOC数据集
  2. 英雄联盟数据分析专题(二)
  3. 使用JSONRPC操作附带token(secret)的aria2
  4. 新浪微博注册(elenium Python 自动化)
  5. 老板要我开发一个OA多级审批流(干货满满)
  6. 苹果手机注册时显示链接服务器出现问题,苹果手机出现连接到服务器时出现问题是什么回事...
  7. 泛函分析在计算机科学中的应用,泛函分析在小波理论中的应用.doc
  8. 泛函分析极简笔记(2)——Mahalanobis distance
  9. 带你深入了解GPU、FPGA和ASIC
  10. 计算机位数怎么看win10,怎么查看Win10是32位还是64位操作系统?