阿里巴巴自從跟SpringCloud共同發起創建微服務開源社區時,開啟了SpringCloud Alibaba
分支,而且在生態內提供了一款適用于分布式應用程序(Dubbo
、SpringCloud
等)的事務框架Seata
,該框架經過多個大版本的發布,已經支持MySQL
、Oracle
這兩種數據庫事務回滾(Rollback
)以及提交(Commit
)控制,每次發版都會修復一些用戶反饋的Issue
以及添加一些新特性。
安裝Seata Server
Seata
目前在github
托管開源源代碼,源碼地址:https://github.com/seata/seata
Seata
每次發版都會提供Server
在不同系統下的執行腳本,可以在Linux/Mac/Windows
系統環境下直接執行腳本來啟動。
下載Seata Server
我們通過github
的releases
界面下載seata
最新發布的server
編譯后的啟動程序,下載地址:https://github.com/seata/seata/releases
根據系統運行環境下載不同的壓縮文件,Mac/Linux
可以選擇下載seata-server-xxx.tar.gz
,Windows
可以選擇下載seata-server-xxx.zip
。
解壓Seata Server
在Mac/Linux
系統下我們通過以下命令來解壓tar.gz
壓縮文件:
?
1 2 3 4 | ~ tar -xvf seata-server-xxx.tar.gz ~ cd seata ~ ls bin conf lib LICENSE |
解壓完成后我們得到了幾個文件夾。
-
bin
存放各個系統的
seata server
啟動腳本 -
conf
存在
seata server
啟動時所需要的配置信息、數據庫模式下所需要的建表語句 -
lib
運行
seata server
所需要的依賴包列表
配置Seata Server
seata server
所有的配置都在conf
文件夾內,該文件夾內有兩個文件我們必須要詳細介紹下。
seata server
默認使用file
(文件方式)進行存儲事務日志
、事務運行信息
,我們可以通過-m db
腳本參數的形式來指定,目前僅支持file
、db
這兩種方式。
-
file.conf
該文件用于配置
存儲方式
、透傳事務信息的NIO
等信息,默認對應registry.conf
文件內的file
方式配置。 -
registry.conf
seata server
核心配置文件,可以通過該文件配置服務注冊方式
、配置讀取方式
。注冊方式目前支持file 、nacos 、eureka、redis、zk、consul、etcd3、sofa等方式,默認為
file
,對應讀取file.conf
內的注冊方式信息。讀取配置信息的方式支持file、nacos 、apollo、zk、consul、etcd3等方式,默認為
file
,對應讀取file.conf
文件內的配置。
啟動Seata Server
啟動seata server
的腳本位于bin
文件內,Linux/Mac
環境使用seata-server.sh腳本啟動,Windows
環境使用seata-server.bat腳本啟動。
Linux/Mac
啟動方式示例如下所示:
?
1 | nohup sh seata-server.sh -p 8091 -h 127.0.0.1 -m file &> seata.log & |
通過nohup
命令讓seata server
在系統后臺運行。
腳本參數:
-
-p
指定啟動
seata server
的端口號。 -
-h
指定
seata server
所綁定的主機
,這里配置要注意指定的主機IP要與業務服務內的配置文件保持一致,如:-h 192.168.1.10
,業務服務配置文件內應該配置192.168.1.10
,即使在同一臺主機上也要保持一致。 -
-m
事務日志、事務執行信息存儲的方式,目前支持
file
(文件方式)、db
(數據庫方式,建表語句請查看config/db_store.sql
、config/db_undo_log.sql
)
查看啟動日志
執行完啟動腳本后要查看日志來確認是否啟動成功,使用如下命令:
?
1 2 3 | ~ tail -1000f seata.log ..... 2019-10-10 14:33:51.340 INFO [main]io.seata.core.rpc.netty.AbstractRpcRemotingServer.start:156 -Server started ... |
當我們看到-Server started
時并未發現其他錯誤信息,我們的seata server
已經啟動成功。