基于Docker的Seata1.4.2的Nacos2.0.3服務(wù)注冊和配置管理

版本

Docker version: 20.10.7, build f0df350
Seata version: 1.4.2
Nacos version: 2.0.3
Mysql version: 8.0.25

容器制作

Docker Nacos 2.0.3容器制作并運行
Nacos 2.x需要多開兩個端口 相關(guān)見Nacos 2.0.0 兼容性文檔

docker run --name nacos-standalone-2.0.3 \ 
      -e MODE=standalone 
      -d 
      -p 8848:8848
      -p 9849:9849 
      -p 9848:9848 
      nacos/nacos-server:2.0.3

制作Seata Server容器之前 下載seata1.4.2的腳本及配置文件

seata 1.4.2

  • /client 是客戶端有關(guān)的一些配置及腳本文件
  • /config-center 是要推送到配置中心的一些配置 這里使用nacos
  • /logstash/config 日志相關(guān)
  • /server 服務(wù)端相關(guān)的配置
    進入配置目錄,向nacos推送配置 你可以先修改 本地目錄/seata/script/config-center/config.txt的內(nèi)容 然后再推送 也可以直接推送 后面在nacos里面改
cd 本地目錄/seata/script/config-center/nacos
sh nacos-config.sh 127.0.0.1

推送完畢后可以在nacos中看到我們推送的配置


Nacos中的Seata Server配置

在本地目錄中/seata/script/server/config/目錄下 只保留 registry.conf 如果你喜歡yaml格式也可以只保留registry.yml
編輯registry.conf 這里注釋以及用不到的配置項刪除了

## https://github.com/seata/seata/blob/1.4.2/script/server/config/registry.conf
registry {
  type = "nacos"
  nacos {
    application = "seata-server"
    # 192.168.*.* macOS 可以通過 ifconfig | grep cast 查看
    serverAddr = "局域網(wǎng)IP:8848"
    group = "SEATA_GROUP"
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }
}
config {
  type = "nacos"
  nacos {
   serverAddr = "局域網(wǎng)IP:8848"
   group = "SEATA_GROUP"
   username = "nacos"
   password = "nacos"
  }
}

Docker Seata Server容器制作并運行 將剛才修改的registry.conf目錄掛載到容器的/root/seta-config 具體見使用 Docker 部署Seata Server 的 "使用自定義配置" 內(nèi)容

docker run --name seata-server-1.4.2 \
        -d -p 8091:8091 \
        -e SEATA_CONFIG_NAME=file:/root/seata-config/registry \
        -v 本地目錄/seata/script/server/config:/root/seata-config   \
        seataio/seata-server:1.4.2

其他

這是前面向nacos推送的默認配置,內(nèi)容如下

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
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
client.undo.logSerialization=jackson
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

如果將配置中store.mode=file改為store.mode=db
那么同時還需要在本地的MySQL新建一個seata數(shù)據(jù)庫,并在該庫下執(zhí)行腳本mysql.sql腳本,再修改
store.db.url=jdbc:mysql://局域網(wǎng)IP:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=用戶名
store.db.password=密碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容