spring cloud分布式事务 整合LCN5.0

1.应用场景
最近遇到分布式事务问题,首先想到了消息中间件(使用rabbitmq 利用事务和消息确认机制 ) ,今天说的是另外一种就是LCN ,尤其升级到5.0后 增加了tcc和txc模式,本次使用的模式还是lcn模式 cloud 版本 Greenwich.RELEASE。
2.GitHub地址
https://github.com/codingapi/tx-lcn
测试项目模块(附代码地址:https://gitee.com/liqunqingchen/lcn-demo
spring cloud分布式事务 整合LCN5.0_第1张图片
3.配置本地tx-manager服务

maven依赖

  
            com.codingapi.txlcn
            txlcn-tm
            5.0.2.RELEASE
        

application.yml文件

spring:
  application:
    #项目名称
    name: tx-manager
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.2.13:3306/tx-manager?characterEncoding=UTF-8
    username: devtest
    password: 111222
  #redis 配置
  redis:
    host: 127.0.0.1
    port: 6379
    password:
server:
  port: 7970
eureka:
  client:
    service-url:
      defaultZone: http://localhost:6677/eureka/
  instance:
    # 注册名
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    # 设置注册到服务的为ip
    prefer-ip-address: true
mybatis:
  configuration:
    #开启驼峰
    map-underscore-to-camel-case: true
tx-lcn:
  manager:
    # TxManager ip(client请求ip)
    host: 127.0.0.1
    # client 请求端口
    port: 8070
    # 心跳检测时间 单位:ms
    heart-time: 12000
    #参数延迟删除时间单位ms
    dtx-time: 10000
    concurrent-level: 128
  logger:
    # 开启日志
    enabled: true

pom文件没有详细的贴 ,也没什么就是加入了spring cloud client mybatis 等依赖
http://localhost:7970/ tx-manager 后台 密码 codingapi
spring cloud分布式事务 整合LCN5.0_第2张图片
4.配置client 服务

  • 首先 启动类加入@EnableDistributedTransaction 注解开启
  • feign-client 代码块

spring cloud分布式事务 整合LCN5.0_第3张图片

  • client-lcn 模块

  • spring cloud分布式事务 整合LCN5.0_第4张图片
    相继启动服务,测试。

  • lcn 模式是当前demo的例子 原理是lcn一直在管理着当前连接,知道整个流程关闭才会释放,占用时间长

  • txc 模式使用注解 @TxcTransaction 该模式保证了最终的一致性,记录sql 的操作,当需要回滚的时候就采用这些记录数据回滚数据库 redis 。

  • tcc模式 使用注解 @TccTransaction 主要有三个模块用来操作业务,Try: 尝试执行业务、 Confirm:确认执行业务、 Cancel: 取消执行业务。

具体使用方式没有去贴例子(demo上增加了tcc模式)。
附代码地址:https://gitee.com/liqunqingchen/lcn-demo

你可能感兴趣的:(spring,boot,小计)