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

推薦する

Nginx ログのカスタマイズとログ バッファの有効化の詳細な説明

序文ウェブサイトのアクセス元をカウントしたい場合は、PHP を使用して情報を取得してデータベースに記...

HTMLでvueとel​​ement-uiを直接参照する方法

コードは次のようになります。 <!DOCTYPE html> <html> ...

最新のウェブフロントエンドフレームワーク10選を紹介(翻訳)

Web 開発の世界では、フレームワークは非常に一般的です。新しいフレームワークやテンプレートが毎日の...

Windows はリモート デスクトップが長時間自動的に切断されるのを防ぎます

Windows リモート デスクトップを使用してサーバーに接続したことがある人なら、リモート デスク...

JS でクリップボード API を使用する方法

目次1. Document.execCommand() メソッド(1)コピー操作(2)貼り付け操作(...

MySQL で遅いファジークエリを最適化する方法

目次1. はじめに: 2. 最初のアイデアはインデックスを構築することです3. 命令P.S. Lik...

エラー mysql テーブル 'performance_schema...解決方法

テスト環境は、JDBCドライバを使用してMariaDB 5.7でセットアップされています。 <...

Docker での Tomcat インストールの 404 問題の解決方法

tomcat の containerID を見つけて、tomacat ディレクトリに入ります。 [r...

1つの記事でJavaScriptのクロージャ関数について学ぶ

目次変数のスコープ閉鎖の概念クロージャの使用クロージャのデメリット最後に、クロージャのメリットとデメ...

Excelアップロード機能を実現するVue + iViewの完全コード

1. HTML部分 <Col span="2">ファイルをアップロー...

CSS でのフレックスレイアウトの詳細な説明

フレックス レイアウトは、エラスティック レイアウトとも呼ばれます。任意のコンテナーをフレックス レ...

ユーザーエクスペリエンスの要素またはWebデザインの要素

システムとユーザー環境の設計<br />Apple システムの成功は、そのシステム アー...

フロントエンド制作に関する簡単な議論: 互換性のために IE6 はまだ必要ですか?

国内市場ではIE6~7のサポートに対する一定の需要がまだありますが、フロントエンド開発者として、私た...

Windows でのシンプルな Mysql バックアップ BAT スクリプトの共有

序文この記事では、Windows で Mysql をバックアップするための簡単な BAT スクリプト...