Spring Cloud Alibaba(6.1 Seata部署)

單機(jī)及集群兩種方式部署Seata揖盘。

我們來學(xué)習(xí)部署單機(jī) Seata TC Server,常用于學(xué)習(xí)或測(cè)試使用亚隅,不建議在生產(chǎn)環(huán)境中部署單機(jī)怕膛。
因?yàn)?TC 需要進(jìn)行全局事務(wù)和分支事務(wù)的記錄缀棍,所以需要對(duì)應(yīng)的存儲(chǔ)宅此。目前,TC 有兩種存儲(chǔ)模式( store.mode ):

  1. file 模式:適合單機(jī)模式爬范,全局事務(wù)會(huì)話信息在內(nèi)存中讀寫父腕,并持久化本地文件 root.data,性能較高青瀑。
  2. db 模式:適合集群模式璧亮,全局事務(wù)會(huì)話信息通過 db 共享萧诫,相對(duì)性能差點(diǎn)。

一枝嘶、部署單機(jī) TC Server

顯然帘饶,我們將采用 file 模式,最終我們部署單機(jī) TC Server 如下圖所示:


單機(jī) Seata
1.1 下載 Seata 軟件包

打開 Seata 下載頁面群扶,選擇想要的 Seata 版本及刻。這里,我們選擇 v1.1.0 最新版本竞阐。
由于github國內(nèi)訪問有問題缴饭,我使用的相關(guān)的一臺(tái)阿里云服務(wù)器進(jìn)行下載后通過xftp傳輸?shù)奖镜亍?/p>

# 創(chuàng)建目錄
$ mkdir -p /Users/guoxiuzhi/Seata
$ cd /Users/guoxiuzhi/Seata

# 下載
$ wget https://github.com/seata/seata/releases/download/v1.1.0/seata-server-1.1.0.tar.gz

# 解壓
$ tar -zxvf seata-server-1.1.0.tar.gz

# 查看目錄
$ cd seata
$ ls -ls
24 -rw-r--r--    1 guoxiuzhi  staff  11365 May 13  2019 LICENSE
 0 drwxr-xr-x    4 guoxiuzhi  staff    128 Apr  2 07:46 bin # 執(zhí)行腳本
 0 drwxr-xr-x    9 guoxiuzhi  staff    288 Feb 19 23:49 conf # 配置文件
 0 drwxr-xr-x  138 guoxiuzhi  staff   4416 Apr  2 07:46 lib #  seata-*.jar + 依賴庫
1.2 啟動(dòng) TC Server

執(zhí)行nohup sh bin/seata-server.sh &命令,啟動(dòng) TC Server 在后臺(tái)骆莹。在 nohup.out 文件中颗搂,我們看到如下日志,說明啟動(dòng)成功:

# 使用 File 存儲(chǔ)器
2020-06-18 08:36:01.302 INFO [main]io.seata.common.loader.EnhancedServiceLoader.loadFile:247 -load TransactionStoreManager[FILE] extension by class[io.seata.server.store.file.FileTransactionStoreManager]
2020-06-18 08:36:01.302 INFO [main]io.seata.common.loader.EnhancedServiceLoader.loadFile:247 -load SessionManager[FILE] extension by class[io.seata.server.session.file.FileBasedSessionManager]
# 啟動(dòng)成功
2020-06-18 08:36:01.597 INFO [main]io.seata.core.rpc.netty.RpcServerBootstrap.start:155 -Server started ...

默認(rèn)配置下幕垦,Seata TC Server 啟動(dòng)在 8091 端點(diǎn)丢氢。

因?yàn)槲覀兪褂?file 模式,所以可以看到用于持久化的本地文件 root.data智嚷。操作命令如下

$ ls -ls sessionStore/
total 0
0 -rw-r--r--  1 guoxiuzhi  staff  0 Apr  2 08:36 root.data

二卖丸、部署集群 TC Server

集群 Seata TC Server,實(shí)現(xiàn)高可用盏道,生產(chǎn)環(huán)境下必備稍浆。在集群時(shí),多個(gè) Seata TC Server 通過 db 數(shù)據(jù)庫猜嘱,實(shí)現(xiàn)全局事務(wù)會(huì)話信息的共享衅枫。

同時(shí),每個(gè) Seata TC Server 可以注冊(cè)自己到注冊(cè)中心上朗伶,方便應(yīng)用從注冊(cè)中心獲得到他們弦撩。最終我們部署 集群 TC Server 如下圖所示:
集群 TC Server

Seata TC Server 對(duì)主流的注冊(cè)中心都提供了集成,具體可見 discovery 目錄论皆。前面文章的注冊(cè)中心使用 Nacos 益楼,這里我們采用它。

2.1 下載 Seata 軟件包

方法同上面的單機(jī)版下載步驟点晴。

2.2 初始化數(shù)據(jù)庫

在 MySQL 中感凤,創(chuàng)建seata數(shù)據(jù)庫,并在該庫下執(zhí)行如下腳本粒督。
使用 mysql.sql 腳本陪竿,初始化 Seata TC Server 的 db 數(shù)據(jù)庫。腳本內(nèi)容如下:

-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
    `xid`                       VARCHAR(128) NOT NULL,
    `transaction_id`            BIGINT,
    `status`                    TINYINT      NOT NULL,
    `application_id`            VARCHAR(32),
    `transaction_service_group` VARCHAR(32),
    `transaction_name`          VARCHAR(128),
    `timeout`                   INT,
    `begin_time`                BIGINT,
    `application_data`          VARCHAR(2000),
    `gmt_create`                DATETIME,
    `gmt_modified`              DATETIME,
    PRIMARY KEY (`xid`),
    KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
    KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
    `branch_id`         BIGINT       NOT NULL,
    `xid`               VARCHAR(128) NOT NULL,
    `transaction_id`    BIGINT,
    `resource_group_id` VARCHAR(32),
    `resource_id`       VARCHAR(256),
    `branch_type`       VARCHAR(8),
    `status`            TINYINT,
    `client_id`         VARCHAR(64),
    `application_data`  VARCHAR(2000),
    `gmt_create`        DATETIME(6),
    `gmt_modified`      DATETIME(6),
    PRIMARY KEY (`branch_id`),
    KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
    `row_key`        VARCHAR(128) NOT NULL,
    `xid`            VARCHAR(96),
    `transaction_id` BIGINT,
    `branch_id`      BIGINT       NOT NULL,
    `resource_id`    VARCHAR(256),
    `table_name`     VARCHAR(32),
    `pk`             VARCHAR(36),
    `gmt_create`     DATETIME,
    `gmt_modified`   DATETIME,
    PRIMARY KEY (`row_key`),
    KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

最終結(jié)果如下圖:
seata數(shù)據(jù)庫及表實(shí)現(xiàn)全局事務(wù)會(huì)話信息的共享
2.3 修改Seata安裝目錄下conf/file.conf 配置文件

修改使用 db 數(shù)據(jù)庫屠橄,實(shí)現(xiàn) Seata TC Server 的全局事務(wù)會(huì)話信息的共享族跛。如下圖所示:
file.conf
2.4 設(shè)置使用 Nacos 注冊(cè)中心

修改conf/registry.conf 配置文件闰挡,設(shè)置使用 Nacos 注冊(cè)中心。如下圖所示:

Seata使用Nacos注冊(cè)中心

2.5 啟動(dòng) TC Server

2.5.1 執(zhí)行nohup sh bin/seata-server.sh -p 18091 -n 1 &命令礁哄,啟動(dòng)第一個(gè) TC Server 在后臺(tái)长酗。
-p:Seata TC Server 監(jiān)聽的端口。
-n:Server node姐仅。在多個(gè) TC Server 時(shí)花枫,需區(qū)分各自節(jié)點(diǎn),用于生成不同區(qū)間的 transactionId 事務(wù)編號(hào)掏膏,以免沖突劳翰。
在 nohup.out 文件中,我們看到如下日志馒疹,說明啟動(dòng)成功:

# 使用 DB 存儲(chǔ)器
2020-06-18 16:54:12.793 INFO [main]io.seata.common.loader.EnhancedServiceLoader.loadFile:247 -load DataSourceGenerator[dbcp] extension by class[io.seata.server.store.db.DbcpDataSourceGenerator]
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2020-06-18 16:54:13.442 INFO [main]io.seata.common.loader.EnhancedServiceLoader.loadFile:247 -load LogStore[DB] extension by class[io.seata.core.store.db.LogStoreDataBaseDAO]
2020-06-18 16:54:13.442 INFO [main]io.seata.common.loader.EnhancedServiceLoader.loadFile:247 -load TransactionStoreManager[DB] extension by class[io.seata.server.store.db.DatabaseTransactionStoreManager]
2020-06-18 16:54:13.442 INFO [main]io.seata.common.loader.EnhancedServiceLoader.loadFile:247 -load SessionManager[DB] extension by class[io.seata.server.session.db.DataBaseSessionManager]
# 啟動(dòng)成功
2020-06-18 16:54:13.779 INFO [main]io.seata.core.rpc.netty.RpcServerBootstrap.start:155 -Server started ...
# 使用 Nacos 注冊(cè)中心
2020-06-18 16:54:13.788 INFO [main]io.seata.common.loader.EnhancedServiceLoader.loadFile:247 -load RegistryProvider[Nacos] extension by class[io.seata.discovery.registry.nacos.NacosRegistryProvider]

2.5.2 執(zhí)行 nohup sh bin/seata-server.sh -p 28091 -n 2 & 命令佳簸,啟動(dòng)第二個(gè) TC Server 在后臺(tái)。

2.5.3 打開 Nacos 注冊(cè)中心的控制臺(tái)颖变,我們可以看到有兩個(gè) Seata TC Server 示例生均。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市腥刹,隨后出現(xiàn)的幾起案子马胧,更是在濱河造成了極大的恐慌,老刑警劉巖衔峰,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佩脊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡垫卤,警方通過查閱死者的電腦和手機(jī)威彰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來穴肘,“玉大人歇盼,你說我怎么就攤上這事∑栏В” “怎么了豹缀?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)慨代。 經(jīng)常有香客問我耿眉,道長(zhǎng),這世上最難降的妖魔是什么鱼响? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮组底,結(jié)果婚禮上丈积,老公的妹妹穿的比我還像新娘筐骇。我一直安慰自己,他們只是感情好江滨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布铛纬。 她就那樣靜靜地躺著,像睡著了一般唬滑。 火紅的嫁衣襯著肌膚如雪告唆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天晶密,我揣著相機(jī)與錄音擒悬,去河邊找鬼。 笑死稻艰,一個(gè)胖子當(dāng)著我的面吹牛懂牧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尊勿,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼僧凤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了元扔?” 一聲冷哼從身側(cè)響起躯保,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎澎语,沒想到半個(gè)月后途事,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咏连,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年盯孙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祟滴。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡振惰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出垄懂,到底是詐尸還是另有隱情骑晶,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布草慧,位于F島的核電站桶蛔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏漫谷。R本人自食惡果不足惜仔雷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碟婆,春花似錦电抚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至公给,卻和暖如春借帘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淌铐。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國打工肺然, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人匣沼。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓狰挡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親释涛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子加叁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348