Seata配置Nacos注冊中心和配置中心
Seata支援注冊服務到Nacos,以及支援Seata所有配置放到Nacos配置中心,在Nacos中統一維護;
高可用模式下就需要配合Nacos來完成
具體配置如下
注冊中心
Seata-server端配置注冊中心,在registry.conf中加入配置注冊中心nacos
注意:確定client與server的注冊處于同一個namespace和group,不然會找不到服務。
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos {
application = "seata-server"
serverAddr = "127.0.0.1:8848"
group = "SEATA_GROUP" # 這裡的配置要和用戶端保持一緻
namespace = "" # 這裡的配置要和用戶端保持一緻
cluster = "default"
username = "nacos"
password = "nacos"
}
......
配置中心
- Seata-Server配置配置中心,在registry.conf中加入配置使用nacos作為配置中心
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "127.0.0.1:8848"
namespace = ""
group = "SEATA_GROUP"
username = ""
password = ""
dataId = "seataServer.properties"
}
............
-
我們需要把Seata的一些配置上傳到Nacos中,配置比較多,是以官方給我們提供了一個config.txt,我們下載下傳并且修改其中參數,上傳到Nacos中
下載下傳位址:https://github.com/seata/seata/tree/develop/script/config-center
-
具體修改:
**注意:**事務分組:用于防護機房停電,來啟用備用機房,或者異地機房,容錯機制,當然如果Seata-Server配置了對應的事務分組,Client也需要配置相同的事務分組
service.vgroupMapping.可以自定義=default default這裡必須等于 registry.config 中的cluster="default"(當然可以更改 )
transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableTmClientBatchSendRequest=false
transport.enableRmClientBatchSendRequest=true
transport.rpcRmRequestTimeout=5000
transport.rpcTmRequestTimeout=10000
transport.rpcTcRequestTimeout=10000
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.mygroup=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.rm.sagaJsonParser=fastjson
client.rm.tccActionInterceptorOrder=-2147482648
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.defaultGlobalTransactionTimeout=60000
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000
client.tm.interceptorOrder=-2147482648
store.mode=db # 修改
store.lock.mode=file
store.session.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
#-----------修改這個區域的JDBC連接配接-----------
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=root
store.db.password=root
store.db.minConn=5
store.db.maxConn=30
#------------------------------------------
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.distributedLockTable=distributed_lock
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
server.distributedLockExpireTime=10000
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
tcc.fence.logTableName=tcc_fence_log
tcc.fence.cleanPeriod=1h
- 修改好這個檔案以後,我們就需要把這個檔案放到seata目錄下
- 此時我們需要把這些配置一個個的加入到Nacos配置中,是以我們需要一個腳本來進行執行,官方已經提供好了,位址為:https://github.com/seata/seata/blob/develop/script/config-center/nacos/nacos-config.sh
- 我們需要在seata-server-1.4.2檔案夾中建立一個腳本檔案nacos-config.sh,然後把腳本内容複制進去
- 利用git來進行執行指令:
sh nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t 命名空間 -u nacos -w nacos
參數說明:
-h:host,預設值localhost
-p:port,預設值8848
-g:配置分組,預設為SEATA_GROUP
-t:租戶資訊,對應Nacos的命名空間ID,預設為空
- 在執行naocs-config檔案的時候要注意,它預設尋找config.txt的路徑和我們的路徑不同,是以要打開naocs-config檔案進行修改,否則無法執行。
測試啟動
當以上的這些配置完成以後,我們就可以啟動nacos和seata-server了,此時我們檢視Nacos的配置中心,就會看到我們傳入的所有配置資訊
附加
各位我們Seata-Server預設端口是8091,那麼如果我們是叢集部署方式,我們如何修改端口那?
在 Linux/Mac 下
$ sh ./bin/seata-server.sh
在 Windows 下
bin\seata-server.bat
支援的啟動參數
參數 | 全寫 | 作用 | 備注 |
---|---|---|---|
-h | –host | 指定在注冊中心注冊的 IP | 不指定時擷取目前的 IP,外部通路部署在雲環境和容器中的 server 建議指定 |
-p | –port | 指定 server 啟動的端口 | 預設為 8091 |
-m | –storeMode | 事務日志存儲方式 | 支援 , , ,預設為 注:redis需seata-server 1.3版本及以上 |
-n | –serverNode | 用于指定seata-server節點ID | 如 , , …, 預設為 |
-e | –seataEnv | 指定 seata-server 運作環境 | 如 , 等, 服務啟動時會使用 這樣的配置 |
如:
$ sh ./bin/seata-server.sh -p 8091 -h 127.0.0.1 -m file
r節點ID | 如 `1`,`2`,`3`..., 預設為 `1` |
| -e | --seataEnv | 指定 seata-server 運作環境 | 如 `dev`, `test` 等, 服務啟動時會使用 `registry-dev.conf` 這樣的配置 |
如:
```bash
$ sh ./bin/seata-server.sh -p 8091 -h 127.0.0.1 -m file