簡介
Seata 是阿里巴巴開源的分佈式事務中間件,一種分佈式事務解決方案,具有高性能和易於使用的微服務架構
安裝
下載安裝包:https://github.com/seata/seata/releases
根據系統運行環境下載不同的壓縮文件:
Mac/Linux
下載seata-server-xxx.tar.gz;
Windows
下載seata-server-xxx.zip
。
提供一個0.9版本:
鏈接:https://pan.baidu.com/s/1wx6RdJSD7LmeX6vT7N2TIw 提取碼:pj47
通過工具(winSCP)將下載的的壓縮包放到服務器指定目錄下。
通過命令(tar -xvf )解壓壓縮包:
解壓後會生成一個 seata目錄,進入可以看到如下目錄
然後進入 conf 目錄
數據庫準備:
準備一個seata數據庫,執行db_store.sql文件創建表。
在業務庫中執行db_undo_log.sql文件創建表。
修改 registry.config文件:
將type 改爲 nacos ,並配置nacos地址。
如下:
registry {
type = "nacos"
nacos {
serverAddr = "111.231.111.150:8848"
namespace = "public"
cluster = "default"
}
}
config {
type = "nacos"
nacos {
serverAddr = "111.231.111.150:8848"
namespace = "public"
}
}
修改 nacos-config.txt 文件:
修改store.mode 存儲模式 爲 db,默認file;
修改數據庫鏈接信息:store.db.url、store.db.user、store.db.password;
其他默認即可。
如下:
transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.thread-factory.boss-thread-prefix=NettyBoss
transport.thread-factory.worker-thread-prefix=NettyServerNIOWorker
transport.thread-factory.server-executor-thread-prefix=NettyServerBizHandler
transport.thread-factory.share-boss-worker=false
transport.thread-factory.client-selector-thread-prefix=NettyClientSelector
transport.thread-factory.client-selector-thread-size=1
transport.thread-factory.client-worker-thread-prefix=NettyClientWorkerThread
transport.thread-factory.boss-thread-size=1
transport.thread-factory.worker-thread-size=8
transport.shutdown.wait=3
service.vgroup_mapping.my_test_tx_group=default
service.enableDegrade=false
service.disable=false
service.max.commit.retry.timeout=-1
service.max.rollback.retry.timeout=-1
client.async.commit.buffer.limit=10000
client.lock.retry.internal=10
client.lock.retry.times=30
client.lock.retry.policy.branch-rollback-on-conflict=true
client.table.meta.check.enable=true
client.report.retry.count=5
client.tm.commit.retry.count=1
client.tm.rollback.retry.count=1
store.mode=db
store.file.dir=file_store/data
store.file.max-branch-session-size=16384
store.file.max-global-session-size=512
store.file.file-write-buffer-cache-size=16384
store.file.flush-disk-mode=async
store.file.session.reload.read_size=100
store.db.datasource=dbcp
store.db.db-type=mysql
store.db.driver-class-name=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://111.231.111.150:3306/seata?useUnicode=true
store.db.user=root
store.db.password=gourd123
store.db.min-conn=1
store.db.max-conn=3
store.db.global.table=global_table
store.db.branch.table=branch_table
store.db.query-limit=100
store.db.lock-table=lock_table
recovery.committing-retry-period=1000
recovery.asyn-committing-retry-period=1000
recovery.rollbacking-retry-period=1000
recovery.timeout-retry-period=1000
transaction.undo.data.validation=true
transaction.undo.log.serialization=jackson
transaction.undo.log.save.days=7
transaction.undo.log.delete.period=86400000
transaction.undo.log.table=undo_log
transport.serialization=seata
transport.compressor=none
metrics.enabled=false
metrics.registry-type=compact
metrics.exporter-list=prometheus
metrics.exporter-prometheus-port=9898
support.spring.datasource.autoproxy=falseservice.default.grouplist=111.231.111.150:8091
service.vgroup_mapping.gourdhu-seata-service-group=default
service.vgroup_mapping.gourdsub-seata-service-group=default
service.vgroup_mapping.xxx-seata-service-group也可以在 Nacos 配置頁面添加,
data-id 爲 service.vgroup_mapping.${YOUR_SERVICE_NAME}-seata-service-group, group 爲 SEATA_GROUP, 如果不添加該配置,啓動後會提示no available server to connect to services-server
注意:服務名不要超過12位,因爲數據庫的transaction_service_group 字段默認爲32位。
將 Seata 配置添加到 Nacos 中
cd到config目錄,運行命令: sh nacos-config.sh 公網id
運行成功後,查看nacos 配置列表, 會有一些Group 爲SEATA_GROUP的配置。
啓動 Seata Server
cd到bin目錄,運行命令:nohup sh seata-server.sh -p 8091 -h 111.231.111.150 &> seata.log &
-p:服務端口
-h:服務器的外網ip
查看Nacos 服務列表:
至此,Seata安裝結束。
結語
本文是最近學習和搭建seata過程的一些總結和記錄,如有不對的地方,歡迎評論吐槽。
官方文檔:https://seata.io/zh-cn/docs/overview/what-is-seata.html