zoukankan      html  css  js  c++  java
  • TX-LCN分布式事务-- LCN事务模式(tm模块)

    自己学习用,待补充! 

    原理:

     LCN模式是通过代理Connection的方式实现对本地事务的操作,然后在由TxManager统一协调控制事务。当本地事务提交回滚或者关闭连接时将会执行假操作,该代理的连接将由LCN连接池管理。

    模式特点

    1. 该模式对代码的嵌入性为低
    2. 该模式仅限于本地存在连接对象且可通过连接对象控制事务的模块。
    3. 该模式下的事务提交与回滚是由本地事务方控制,对于数据一致性上有较高的保障
    4. 该模式缺陷在于代理的连接需要随事务发起方一共释放连接,增加了连接占用的时间

    本质:代理了DataSource的 机制,保持了请求和链接的对应。

    快速开发:

    工程结构:

    pom  文 件:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.4.5</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>lcn-tm</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>lcn-tm</name>
        <description>lcn-tm</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!-- tm  manager -->
            <dependency>
                <groupId>com.codingapi.txlcn</groupId>
                <artifactId>txlcn-tm</artifactId>
                <version>5.0.2.RELEASE</version>
            </dependency>
            <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>
    
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    application.properties:

    # TM事务管理器的服务端WEB访问端口。提供一个可视化的界面。端口自定义。
    server.port=7970
    
    # TM事务管理器,需要访问数据库,实现分布式事务状态记录。
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/tx-manager?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    spring.datasource.username=root
    spring.datasource.password=root
    
    # TM事务管理器,是依赖Redis使用分布式事务协调的。尤其是TCC和TXC两种事务模型。
    spring.redis.host=127.0.0.1
    spring.redis.port=6379
    
    # 为spring应用起名。
    spring.application.name=tx-lcn-transaction-manager
    
    # TM事务管理器,提供的WEB管理平台的登录密码。无用户名。 默认是codingapi
    tx-lcn.manager.admin-key=txlcn
    # 日志。如果需要TM记录日志。则开启,赋值为true,并提供后续的配置。
    tx-lcn.logger.enabled=true
    
    # 为日志功能,提供数据库连接。和之前配置的分布式事务管理依赖使用的数据源不同。
    tx-lcn.logger.driver-class-name=com.mysql.cj.jdbc.Driver
    tx-lcn.logger.jdbc-url=jdbc:mysql://localhost:3306/tx-manager?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    tx-lcn.logger.username=root
    tx-lcn.logger.password=root

    数据库表:

    这是固定写法,sql文件的位置(解压jar文件 / 官网也有):

    启动类添加注解:

    开启redis 运行即可!

  • 相关阅读:
    【转】全国各地做生意十年的心得,忍不住上来感慨一下,诚信才是根基!
    pbootcms常用标签
    wordpress常用标签
    表格
    dedecms忘记后台密码
    新手建站基础步骤
    zblog常用插件及操作步骤
    织梦建站如何添加视频文件
    #Centos7.4#Shell中判断语句if中-z至-d的意思
    #Centos7.4#Linux虚拟机KVM配置网卡【Requested operation is not valid: network 'br0' is not active】
  • 原文地址:https://www.cnblogs.com/lifan12589/p/14722833.html
Copyright © 2011-2022 走看看