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 変換によって子要素の固定位置を絶対位置に変更する方法

推薦する

Linux サーバーのグラフィック カードのクラッシュの解決策

ログインインターフェースの解像度が特に大きい場合、グラフィカルインターフェース全体が特に大きくなり、...

MySQLはこのような更新文を決して書きません

目次序文原因現象なぜ?分析要約する序文今日は、非常に典型的な MySQL の「落とし穴」についてお話...

抽選効果を実現するJavaScript

この記事では、宝くじマシンの効果を実現するためのJavaScriptの具体的なコードを参考までに共有...

Windows で nginx を素早くインストールし、自動的に起動するように設定する

目次1. Windows システムでの Nginx のインストールと起動プロセス: 2. 起動時にN...

Windows 10 での MySQL 8.0.22 のインストールと設定方法のグラフィック チュートリアル

MySQL 8.0.22のインストールと設定方法のグラフィックチュートリアル、参考までに、具体的な内...

写真をアップロードして顔を認識する Vue+axios サンプルコード

目次Axios リクエストQs処理データ分析Vantアップロードファイル形式完全なコードこの記事では...

MySQL ベストプラクティス: パーティションテーブルの基本タイプ

MySQL パーティションテーブルの概要MySQL の人気が高まるにつれて、MySQL に保存される...

テーブルセルの幅tdの設定は無効であり、内部コンテンツによって常に引き伸ばされます

テーブルページを作成するときに、td に設定された幅が無効になることがあります。td の幅は常に内部...

VMwareでCentOSがインターネットにアクセスできない問題を素早く解決

昨日、VMware に CentOS7 をインストールしました。Tomcat パッケージを転送するた...

MySQL 外部キー制約の一般的な操作の例 [表示、追加、変更、削除]

この記事では、例を使用して、MySQL 外部キー制約の一般的な操作について説明します。ご参考までに、...

HTML テーブル タグ チュートリアル (34): 行スパン属性 ROWSPAN

複雑なテーブル構造では、一部のセルが水平方向に複数のセルにまたがるため、行間属性 ROWSPAN を...

Vueは小さな天気予報アプリケーションを実装します

これは私が Vue フレームワークを独学していたときに真似したウェブサイトです。いくつかの都市の天気...

XHTML の一般的な構造タグ

構造本文、見出し、HTML、タイトル文章abbr、頭字語、アドレス、引用ブロック、br、引用、コード...

ソフトウェア 404 と 404 エラーとは何か、またそれらの違いは何ですか

まず、404 とソフト 404 とは何でしょうか? 404: 簡単に言えば、ユーザーが存在しないペー...

HTML ページの先頭に戻るいくつかの実装の概要

最近、ウェブサイトを開発する際にトップに戻るボタンを作成する必要がありますが、私は主にバックエンドの...