• STATA


    官网

    https://seata.io/zh-cn/
    在这里插入图片描述

    下载

    https://seata.io/zh-cn/blog/download.html

    在这里插入图片描述
    source:源文件
    binary:编译后的文件,用以配置、启动
    注:这两个文件都要下载,后面会用到源文件里的一些配置

    serve端用到的sql

    https://github.com/seata/seata/blob/master/script/server/db/mysql.sql

    client用到的sql

    https://github.com/seata/seata/blob/master/script/client/at/db/mysql.sql

    快速入门(AT模式)

    https://seata.io/zh-cn/docs/overview/what-is-seata.html

    stata-server

    seata/seata-server-1.4.2/bin目录下

    file.conf

    修改mode = “db” 然后再修改db模块的配置信息(记得在seata库里初始化server端用到的sql)
    在这里插入图片描述

    registry.conf

    根据自己nacos的配置进行修改
    在这里插入图片描述
    在这里插入图片描述

    启动

    在这里插入图片描述
    在这里插入图片描述

    nacos配置

    https://seata.io/zh-cn/docs/user/configuration/nacos.html

    配置seata-server端配置

    创建命名空间seata_config

    在这里插入图片描述在命名空间seata_config中创建配置seataServer.properties的配置,类型为properties
    在这里插入图片描述配置内容参考
    seata-1.4.2/script/config-center/config.txt(下载源文件里)记得修改
    client.undo.logSerialization = "kryo"以及数据库配置

    transport.type=TCP
    transport.server=NIO
    transport.heartbeat=true
    transport.enableClientBatchSendRequest=false
    transport.threadFactory.bossThreadPrefix=NettyBoss
    transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
    transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
    transport.threadFactory.shareBossWorker=false
    transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
    transport.threadFactory.clientSelectorThreadSize=1
    transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
    transport.threadFactory.bossThreadSize=1
    transport.threadFactory.workerThreadSize=default
    transport.shutdown.wait=3
    # 注意 my_test_tx_group 这个是自定义名称,如果修改的话记得要跟项目的配置保持一致
    service.vgroupMapping.my_test_tx_group=default
    service.default.grouplist=127.0.0.1:8091
    service.enableDegrade=false
    service.disableGlobalTransaction=false
    client.rm.asyncCommitBufferLimit=10000
    client.rm.lock.retryInterval=10
    client.rm.lock.retryTimes=30
    client.rm.lock.retryPolicyBranchRollbackOnConflict=true
    client.rm.reportRetryCount=5
    client.rm.tableMetaCheckEnable=false
    client.rm.tableMetaCheckerInterval=60000
    client.rm.sqlParserType=druid
    client.rm.reportSuccessEnable=false
    client.rm.sagaBranchRegisterEnable=false
    client.tm.commitRetryCount=5
    client.tm.rollbackRetryCount=5
    client.tm.defaultGlobalTransactionTimeout=60000
    client.tm.degradeCheck=false
    client.tm.degradeCheckAllowTimes=10
    client.tm.degradeCheckPeriod=2000
    store.mode=file
    store.publicKey=
    store.file.dir=file_store/data
    store.file.maxBranchSessionSize=16384
    store.file.maxGlobalSessionSize=512
    store.file.fileWriteBufferCacheSize=16384
    store.file.flushDiskMode=async
    store.file.sessionReloadReadSize=100
    store.db.datasource=druid
    store.db.dbType=mysql
    store.db.driverClassName=com.mysql.jdbc.Driver
    store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true
    store.db.user=username
    store.db.password=password
    store.db.minConn=5
    store.db.maxConn=30
    store.db.globalTable=global_table
    store.db.branchTable=branch_table
    store.db.queryLimit=100
    store.db.lockTable=lock_table
    store.db.maxWait=5000
    store.redis.mode=single
    store.redis.single.host=127.0.0.1
    store.redis.single.port=6379
    store.redis.sentinel.masterName=
    store.redis.sentinel.sentinelHosts=
    store.redis.maxConn=10
    store.redis.minConn=1
    store.redis.maxTotal=100
    store.redis.database=0
    store.redis.password=
    store.redis.queryLimit=100
    server.recovery.committingRetryPeriod=1000
    server.recovery.asynCommittingRetryPeriod=1000
    server.recovery.rollbackingRetryPeriod=1000
    server.recovery.timeoutRetryPeriod=1000
    server.maxCommitRetryTimeout=-1
    server.maxRollbackRetryTimeout=-1
    server.rollbackRetryTimeoutUnlockEnable=false
    client.undo.dataValidation=true
    # jackson本身的向前兼容性存在问题,将Seata的序列化方式切换到非 jackson 序列化方式 配置项为client.undo.logSerialization = "kryo"
    client.undo.logSerialization=kryo
    client.undo.onlyCareUpdateColumns=true
    server.undo.logSaveDays=7
    server.undo.logDeletePeriod=86400000
    client.undo.logTable=undo_log
    client.undo.compress.enable=true
    client.undo.compress.type=zip
    client.undo.compress.threshold=64k
    log.exceptionRate=100
    transport.serialization=seata
    transport.compressor=none
    metrics.enabled=false
    metrics.registryType=compact
    metrics.exporterList=prometheus
    metrics.exporterPrometheusPort=9898
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    配置项目客户端nacos配置

    创建自定义的命名空间,然后添加项目的具体配置,样例如下
    nacos-client-server.yml
    在这里插入图片描述
    配置内容参考:

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://localhost:3306/order?serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
        username: root
        password: 123456
        druid:
          name: local
          initial-size: 5
          max-active: 15
          min-idle: 5
          max-wait: 3000
          pool-prepared-statements: true
          max-open-prepared-statements: 20
          validation-query: select version()
          validation-query-timeout: 0
          test-on-borrow: false
          test-on-return: false
          test-while-idle: false
          time-between-eviction-runs-millis: 60000
          min-evictable-idle-time-millis: 50000
          max-evictable-idle-time-millis: 300000
          mysql: 
            usePingMethod: false
    
    mybatis-plus:
      mapper-locations: classpath*:/mapper/*.xml
    # 分布式事务配置
    seata:
      enabled: true
      application-id: ${spring.application.name}
      # 这里的这个my_test_tx_group名字要跟seata服务端的配置保持一致(命名空间seata_config中创建配置seataServer.properties的配置)
      tx-service-group: my_test_tx_group
      # seata服务端的配置
      config:
        type: nacos
        nacos:
          server-addr: 127.0.0.1:8848
          group: "SEATA_GROUP"
          namespace: "seata_config"
          dataId: "seataServer.properties"
          username: "nacos"
          password: "nacos"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    配置项目服务端nacos配置

    创建自定义的命名空间,然后添加项目的具体配置,样例如下
    nacos-provider-server.yml
    在这里插入图片描述
    配置内容参考:

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://localhost:3306/user?serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
        username: root
        password: 123456
        druid:
          name: local
          initial-size: 5
          max-active: 15
          min-idle: 5
          max-wait: 3000
          pool-prepared-statements: true
          max-open-prepared-statements: 20
          validation-query: select version()
          validation-query-timeout: 0
          test-on-borrow: false
          test-on-return: false
          test-while-idle: false
          time-between-eviction-runs-millis: 60000
          min-evictable-idle-time-millis: 50000
          max-evictable-idle-time-millis: 300000
          mysql: 
            usePingMethod: false
    
    mybatis-plus:
      mapper-locations: classpath*:/mapper/*.xml
    # 分布式事务配置
    seata:
      enabled: true
      application-id: ${spring.application.name}
      # 这里的这个my_test_tx_group名字要跟seata服务端的配置保持一致(命名空间seata_config中创建配置seataServer.properties的配置)
      tx-service-group: my_test_tx_group
      # seata服务端的配置
      config:
        type: nacos
        nacos:
          server-addr: 127.0.0.1:8848
          group: "SEATA_GROUP"
          namespace: "seata_config"
          dataId: "seataServer.properties"
          username: "nacos"
          password: "nacos"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    项目配置

    客户端本地配置

    在这里插入图片描述

    server:
      port: 8083
    spring:
      application:
        name: nacos-client-server
      cloud:
        nacos:
          config:
            namespace: gxy
            server-addr: localhost:8848
            file-extension: yml
            group: DEFAULT_GROUP
          discovery:
            namespace: gxy
            server-addr: localhost:8848
      output:
        ansi:
          enabled: always
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    服务端本地配置

    在这里插入图片描述

    server:
      port: 8081
    spring:
      application:
        name: nacos-provider-server
      cloud:
        nacos:
          config:
    #        namespace: test
    #        server-addr: 172.16.0.85:8848
            namespace: gxy
            server-addr: localhost:8848
            file-extension: yml
            group: DEFAULT_GROUP
          discovery:
    #        namespace: test
    #        server-addr: 172.16.0.85:8848
            namespace: gxy
            server-addr: localhost:8848
      output:
        ansi:
          enabled: always
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    全局事务测试

    nacos-client-server 调用 nacos-provider-server进行数据库写操作,发生异常然然后数据回滚
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述客户端日志
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    ELAS库计算双目视差图
    Caddy是什么
    docker镜像仓库迁移
    51单片机学习:DS18B20温度传感器实验
    基于hydra库实现yaml配置文件的读取(支持命令行参数)
    MVC架构_Qt自己的MV架构
    申请发明专利的流程及时间
    电池可热插拔拆卸对三防加固平板有什么意义|亿道三防onerugged
    搞定蓝牙——第一篇(蓝牙发展史与简述)
    pycharm爬虫模块(scrapy)基础使用
  • 原文地址:https://blog.csdn.net/fenfenguai/article/details/126658728