seata docker 高可用性デプロイメントの詳細な紹介

seata docker 高可用性デプロイメントの詳細な紹介

バージョン

1.4.2
公式ドキュメント
ドッカーハブ

起動する

環境変数SEATA_CONFIG_NAMEを使用して、設定ファイルの場所/root/seata-config/registry.confを指定します。

docker run --name seata-server \
        -p 8091:8091 \
        -e SEATA_CONFIG_NAME=ファイル:/root/seata-config/registry \ 
        -v /User/seata/config:/root/seata-config \
        seataio/seata-server

設定ファイル

高可用性を実現するには、登録センター、構成センター、データベースに依存する必要があります。
レジストリ.conf

レジストリ {
  タイプ = "ナコス"

  ナコス
    アプリケーション = "seata-server"
    サーバーアドレス = "192.168.199.2"
    名前空間 = "テスト"
    グループ = "SEATA_GROUP"
    クラスター = "デフォルト"
    ユーザー名 = ""
    パスワード = ""
  }
}

設定{
  タイプ = "ナコス"  
  ナコス
    サーバーアドレス = "192.168.199.2"
    名前空間 = "テスト"
    グループ = "SEATA_GROUP"
    ユーザー名 = ""
    パスワード = ""
  }
}

NACOS 構成

注: nacos 構成を使用する場合、すべての構成を含むプロパティ ファイルを作成するのではなく、対応するグループ (SEATA_GROUP) の下の各構成項目のテキスト値を構成する必要があります。公式ソース コードのスクリプトを使用して、使用可能なすべての構成参照をインポートできます。

1. データベースの使用

ストアモード=db
store.db.datasource=ドルイド
ストア.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://192.168.199.2:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=ルート
ストア.db.パスワード=123456

データベースを作成する

データベース作成スクリプト

-- -------------------------------- storeMode が 'db' の場合に使用されるスクリプト --------------------------------
-- GlobalSessionデータを保存するテーブル
存在しない場合はテーブルを作成 `global_table`
(
    `xid` VARCHAR(128) NOT NULL、
    `transaction_id` BIGINT、
    `status` TINYINT NOT NULL、
    `アプリケーションID` VARCHAR(32)、
    `transaction_service_group` VARCHAR(32)、
    `トランザクション名` VARCHAR(128)、
    `タイムアウト` INT,
    `begin_time` BIGINT、
    `application_data` VARCHAR(2000)、
    `gmt_create` 日付時刻、
    `gmt_modified` 日付時刻、
    主キー (`xid`)、
    キー `idx_gmt_modified_status` (`gmt​​_modified`, `status`),
    キー `idx_transaction_id` (`transaction_id`)
) エンジン = InnoDB
  デフォルト文字セット = utf8;

-- BranchSessionデータを保存するテーブル
`branch_table` が存在しない場合はテーブルを作成します
(
    `branch_id` BIGINT NOT NULL、
    `xid` VARCHAR(128) NOT NULL、
    `transaction_id` BIGINT、
    `リソースグループID` VARCHAR(32)、
    `resource_id` VARCHAR(256)、
    `branch_type` VARCHAR(8)、
    `ステータス` TINYINT、
    `client_id` VARCHAR(64)、
    `application_data` VARCHAR(2000)、
    `gmt_create` 日付時刻(6)、
    `gmt_modified` 日付時刻(6)、
    主キー (`branch_id`)、
    キー `idx_xid` (`xid`)
) エンジン = InnoDB
  デフォルト文字セット = utf8;

-- ロックデータを保存するテーブル
存在しない場合はテーブルを作成する `lock_table`
(
    `row_key` VARCHAR(128) NOT NULL、
    `xid` VARCHAR(128)、
    `transaction_id` BIGINT、
    `branch_id` BIGINT NOT NULL、
    `resource_id` VARCHAR(256)、
    `テーブル名` VARCHAR(32)、
    `pk` VARCHAR(36)、
    `gmt_create` 日付時刻、
    `gmt_modified` 日付時刻、
    主キー (`row_key`)、
    キー `idx_branch_id` (`branch_id`)
) エンジン = InnoDB
  デフォルト文字セット = utf8;

例外処理

1. クライアントがエラーを報告します: 列 'application_id' のデータが長すぎます

io.seata.core.exception.TmTransactionException: TransactionException[グローバル要求の開始に失敗しました。xid=null、msg=データの切り捨て: 行 1 の列 'application_id' のデータが長すぎます]
io.seata.tm.DefaultTransactionManager.begin(DefaultTransactionManager.java:55) で ~[seata-all-1.3.0.jar:1.3.0]
io.seata.tm.api.DefaultGlobalTransaction.begin(DefaultGlobalTransaction.java:104) で ~[seata-all-1.3.0.jar:1.3.0]
io.seata.tm.api.TransactionalTemplate.beginTransaction(TransactionalTemplate.java:175) で ~[seata-all-1.3.0.jar:1.3.0]

seata データベースの global_table.application_id フィールドのデフォルトの長さは varchar(32) です。クライアント アプリケーション ID が長すぎる場合、このエラーが報告されます。フィールド タイプを手動で変更して長さを増やすことができます。

seata docker 高可用性デプロイメントに関するこの記事はこれで終わりです。 seata docker デプロイメントに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。 今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • SEATAトランザクションサービスDockerのデプロイ手順の詳細説明
  • Docker は 2003 年の問題を解決するために MySQL リモート接続を導入しました
  • MySQL8 ベースの docker-compose デプロイメント プロジェクトの実装

<<:  JavaScript におけるシリアル操作と並列操作

>>:  CSS3 変換によって子要素の固定位置を絶対位置に変更する方法

推薦する

Vue はボタンをクリックしてファイルをダウンロードする操作コードを実装します (バックエンド Java)

前回の記事では、ボタンをクリックしてファイルをダウンロードするVueの機能を紹介しました。今日は、ボ...

ポップアップはすべて不正なものではありません。ウェブサイトのポップアップをデザインするためのヒント

ポップアップニュースは国内のインターネットサービスでは一般的であり、リアルタイムプッシュ方式はウェブ...

HTML のブロックレベル要素と行レベル要素、特殊文字、ネスト規則

基本的な HTML Web ページ タグのネスト ルールを紹介する場合、最初に説明する必要があるのは...

MySQL の CPU 負荷が高い問題のトラブルシューティング

MySQL による CPU 負荷の上昇今日の午後、MySQL によってサーバーの負荷が高くなる問題を...

ランダム点呼 Web ページを実装するための JavaScript

JavaScriptは、参考のためにランダムな点呼Webページを作成します。具体的な内容は次のとお...

MySQL の左結合操作における on 条件と where 条件の違いの紹介

優先度両方のケースで同じ条件を設定すると、異なる結果セットが生成される可能性があるのは、優先順位のた...

iview権限管理の実装

目次iview-admin2.0 組み込み権限管理権限に基づいてコンポーネントの表示を制御するカスタ...

メッセージボードにメッセージを追加および削除するための JavaScript

この記事では、JavaScript メッセージ ボードでメッセージを追加および削除する小さな例を詳細...

Vue は URL に基づいて非同一オリジンのファイルをどのようにダウンロードするのか

一般的に、URL に基づいてファイルをダウンロードする場合、次の 2 つの解決策があります。 1. ...

WeChatアプレットは記録機能を実装します

この記事では、WeChatアプレットのレコード機能を実装するための具体的なコードを参考までに紹介しま...

CSS 使用のヒントのまとめ

最近、ブログのアップグレードを始めました。テンプレートを変更する過程で、CSS スタイルシートを書き...

CSS3 を使用した背景ぼかし効果の 3 つの例

導入から始めず、いきなり本題に入りましょう。通常の背景ぼかし効果は次のとおりです。 プロパティを使用...

Linux での MySQL 5.6 バイナリのインストール プロセス

1.1 バイナリインストールパッケージをダウンロードするhttps://dev.mysql.com/...

クリーンなコードのための Web デザインの 12 の法則 [グラフィック]

美しいコードは美しい Web サイトの基礎です。優れた CSS は、同様に優れた HTML の上にの...

MySQL でデータを削除してもテーブル ファイルのサイズが変更されないのはなぜですか?

長期間稼働しているデータベースの場合、テーブルがストレージ領域を占有しすぎるという問題がよく発生しま...