• 使用docker运行seata-server:1.0.0


    本文档使用docker容器运行seata-server:1.0.0版本,并以nacos作为注册中心与配置中心,使用mysql作为seata数据库

    1.1 docker 拉取seata-server:1.0.0镜像

    1 docker pull seataio/seata-server:1.0.0

    1.2 查看镜像是否拉取成功

    1 docker image ls

    1.3 docker启动seata-server

    1 docker run --name seata-server -p 8091:8091 -e SEATA_IP=192.168.0.177 -e SEATA_PORT=8091 -d  seataio/seata-server:1.0.0

    1.4 将nacos-config导入到nacos配置中心,需要注意的是seata-server:1.0.0的容器中并没有关于nacos的配置文件,所以这里在github中将对应的配置下载下来供大家使用。 

      nacos-config.sh:将以下内容保存至sh文件,使用该sh文件将txt中的配置推向nacos配置中心

     1 #!/usr/bin/env bash
     2 if [ $# != 1 ]; then
     3 echo "./nacos-config.sh nacosIp"
     4 exit -1
     5 fi
     6 nacosIp=$1
     7 echo "set nacosIp=$nacosIp"
     8 error=0
     9 for line in $(cat nacos-config.txt)
    10 do
    11 key=${line%%=*}
    12 value=${line#*=}
    13 echo "
     set "${key}" = "${value}
    14 result=`curl -X POST "http://$nacosIp:8848/nacos/v1/cs/configs?dataId=$key&group=SEATA_GROUP&content=$value"`
    15 if [ "$result"x == "true"x ]; then
    16   echo "33[42;37m $result 33[0m"
    17 else
    18   echo "33[41;37 $result 33[0m"
    19   let error++
    20 fi
    21 done
    22 if [ $error -eq 0 ]; then
    23 echo  "
    33[42;37m init nacos config finished, please start seata-server. 33[0m"
    24 else
    25 echo  "
    33[41;33m init nacos config fail. 33[0m"
    26 fi

      nacos-config.txt:seata的配置,这里已经将对应的数据库配置修改掉了,如果配置有变的话只需要修改对应的配置项就可以,配置项默认被推到public命名空间,后续只需要将这些配置克隆到自己的命名空间就可以了

     1 transport.type=TCP
     2 transport.server=NIO
     3 transport.heartbeat=true
     4 transport.thread-factory.boss-thread-prefix=NettyBoss
     5 transport.thread-factory.worker-thread-prefix=NettyServerNIOWorker
     6 transport.thread-factory.server-executor-thread-prefix=NettyServerBizHandler
     7 transport.thread-factory.share-boss-worker=false
     8 transport.thread-factory.client-selector-thread-prefix=NettyClientSelector
     9 transport.thread-factory.client-selector-thread-size=1
    10 transport.thread-factory.client-worker-thread-prefix=NettyClientWorkerThread
    11 transport.thread-factory.boss-thread-size=1
    12 transport.thread-factory.worker-thread-size=8
    13 transport.shutdown.wait=3
    14 service.vgroup_mapping.seata_yanwu_base=default
    15 service.vgroup_mapping.seata_yanwu_file=default
    16 service.vgroup_mapping.seata_yanwu_device=default
    17 service.enableDegrade=false
    18 service.disable=false
    19 service.max.commit.retry.timeout=-1
    20 service.max.rollback.retry.timeout=-1
    21 client.async.commit.buffer.limit=10000
    22 client.lock.retry.internal=10
    23 client.lock.retry.times=30
    24 store.mode=db
    25 store.file.dir=file_store/data
    26 store.file.max-branch-session-size=16384
    27 store.file.max-global-session-size=512
    28 store.file.file-write-buffer-cache-size=16384
    29 store.file.flush-disk-mode=async
    30 store.file.session.reload.read_size=100
    31 store.db.datasource=dbcp
    32 store.db.driver-class-name=com.mysql.jdbc.Driver
    33 store.db.db-type=mysql
    34 store.db.url=jdbc:mysql://192.168.0.177:3306/seata?useUnicode=true
    35 store.db.user=root
    36 store.db.password=yanwu121318
    37 store.db.min-conn=1
    38 store.db.max-conn=3
    39 store.db.global.table=global_table
    40 store.db.branch.table=branch_table
    41 store.db.query-limit=100
    42 store.db.lock-table=lock_table
    43 recovery.committing-retry-period=1000
    44 recovery.asyn-committing-retry-period=1000
    45 recovery.rollbacking-retry-period=1000
    46 recovery.timeout-retry-period=1000
    47 transaction.undo.data.validation=true
    48 transaction.undo.log.serialization=jackson
    49 transaction.undo.log.save.days=7
    50 transaction.undo.log.delete.period=86400000
    51 transaction.undo.log.table=undo_log
    52 transport.serialization=seata
    53 transport.compressor=none
    54 metrics.enabled=false
    55 metrics.registry-type=compact
    56 metrics.exporter-list=prometheus
    57 metrics.exporter-prometheus-port=9898

      将这两个文件拿到服务器中,然后执行下面的命令,就可以将配置推到nacos

    1 sh nacos-config.sh 192.168.0.1772 ### 192.168.0.177 为nacos的服务器地址

    1.5  进入seata-server容器

    1 docker exec -ti seata-server sh

    1.6 修改seata的配置

    1 vi resources/registry.conf

       将文件改为如下内容

     1 registry {
     2   type = "nacos"
     3   nacos {
     4     serverAddr = "192.168.0.177:8848"
     5     namespace = "e02de5de-d737-45d5-af22-ae87d0137308"
     6     cluster = "default"
     7   }
     8 }
     9 config {
    10   type = "nacos"
    11   nacos {
    12     serverAddr = "192.168.0.177:8848"
    13     namespace = "e02de5de-d737-45d5-af22-ae87d0137308"
    14     group = "SEATA_GROUP"
    15   }
    16 }

    1.7  重启seata-server容器

    1 docker restart seata-server

    1.8 在seata配置的数据库中数据库执行以下SQL语句,创建seata所需要的表

     1 -- the table to store GlobalSession data
     2 drop table if exists `global_table`;
     3 create table `global_table` (
     4   `xid` varchar(128)  not null,
     5   `transaction_id` bigint,
     6   `status` tinyint not null,
     7   `application_id` varchar(32),
     8   `transaction_service_group` varchar(32),
     9   `transaction_name` varchar(64),
    10   `timeout` int,
    11   `begin_time` bigint,
    12   `application_data` varchar(2000),
    13   `gmt_create` datetime,
    14   `gmt_modified` datetime,
    15   primary key (`xid`),
    16   key `idx_gmt_modified_status` (`gmt_modified`, `status`),
    17   key `idx_transaction_id` (`transaction_id`)
    18 );
    19 
    20 -- the table to store BranchSession data
    21 drop table if exists `branch_table`;
    22 create table `branch_table` (
    23   `branch_id` bigint not null,
    24   `xid` varchar(128) not null,
    25   `transaction_id` bigint ,
    26   `resource_group_id` varchar(32),
    27   `resource_id` varchar(256) ,
    28   `lock_key` varchar(128) ,
    29   `branch_type` varchar(8) ,
    30   `status` tinyint,
    31   `client_id` varchar(64),
    32   `application_data` varchar(2000),
    33   `gmt_create` datetime,
    34   `gmt_modified` datetime,
    35   primary key (`branch_id`),
    36   key `idx_xid` (`xid`)
    37 );
    38 
    39 -- the table to store lock data
    40 drop table if exists `lock_table`;
    41 create table `lock_table` (
    42   `row_key` varchar(128) not null,
    43   `xid` varchar(96),
    44   `transaction_id` long ,
    45   `branch_id` long,
    46   `resource_id` varchar(256) ,
    47   `table_name` varchar(32) ,
    48   `pk` varchar(32) ,
    49   `gmt_create` datetime ,
    50   `gmt_modified` datetime,
    51   primary key(`row_key`)
    52 );
  • 相关阅读:
    Azure Cognitive Service 访问优化
    Azure Managed Disk 共享不灵,EventGrid + LogicApp 来搞
    AZURE ACI -- 无服务器化容器解决方案
    Global Azure 与 China Azure 互联
    小总结
    存储过程及Comm.cs类的创建
    DataGrid1
    根据经纬度和半径计算经纬度范围
    CheckBoxJS选中与反选得到Value
    每天学一点-Jquery判断checkbox是否为选中状态
  • 原文地址:https://www.cnblogs.com/yanwu0527/p/12666572.html
Copyright © 2020-2023  润新知