技術共有

Apache Seata アプリケーション側の起動プロセスの分析 - 登録センターおよび構成センター モジュール

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

この記事の由来は Apache Seata 公式ドキュメント、さらに詳しい記事をご覧になるには、公式 Web サイトにアクセスしてください。
この記事の由来はApache Seata 公式ドキュメント、さらに詳しい記事をご覧になるには、公式 Web サイトにアクセスしてください。

Apache Seata アプリケーション側の起動プロセスの分析 - 登録センターおよび構成センター モジュール

序文

Seata のアプリケーション側 (RM、TM) の起動プロセス中に最初に行うことは、コーディネーター側 (TC) との通信を確立することです。これが Seata が分散トランザクション調整を完了するための前提条件です。その後、 Seata は の初期化を完了します。 TC が接続を確立するプロセス中に、アプリケーション側でコーディネーターと通信します。TC トランザクション コーディネーターのクラスターとアドレスを見つける方法の?また設定モジュールから各種設定情報を取得する方法どうですか?これがこの記事の焦点です。

制限を与える

Seata は、ミドルウェア レベルの基礎となるコンポーネントとして、特定の実装のためのサードパーティ フレームワークの導入に細心の注意を払っています。興味のある学生は、Seata の SPI メカニズムを深く理解し、Seata が多数の拡張ポイント (Extensions) を使用してどのように機能するかを確認できます。コンポーネントの特定の実装への依存は逆転し、代わりに抽象インターフェイスに依存します。同時に、マイクロサービスやクラウド ネイティブなどの一般的なアーキテクチャから派生したエコシステムへの統合を改善するために、Seata は SPI メカニズムを使用して複数の主流を実装します。マイクロサービス フレームワーク、登録センター、構成センター、および Java 開発フレームワーク界の「リーダー」である SpringBoot などは、マイクロカーネル アーキテクチャ、疎結合、スケーラビリティを確保しながら、さまざまなコンポーネントと「適切に統合」することもできます。 」により、さまざまなテクノロジー スタックを使用する環境への Seata の導入が容易になります。

この記事はすべての人に寄り添うことを目的としていますSeataを初めてお試し導入したときシナリオでは、次の導入部で選択しますアプリケーション側利用資格は以下の通りです。構成センターおよび登録センターとしてのファイル、およびそれに基づいてスプリングブート起動する。

この条件を念頭に置いて、Seata のソース コードを詳しく調べてみましょう。

マルチモジュール交互連携のRM/TM初期化プロセス

存在する Seataクライアント起動プロセスの分析(1)では、Seata アプリケーション側での TM と RM の初期化と、アプリケーション側が Netty Channel を作成して TC サーバーに登録リクエストを送信する方法を分析しました。さらに、RM の初期化プロセス中に、Seata の他のモジュール (登録センター、構成センター、負荷分散) も次々に登場し、互いに連携して TC サーバーへの接続プロセスを完了しました。

TC サーバーに再接続するクライアントのメソッド NettyClientChannelManager.Channreconnect() を実行するときは、まず次のことを行う必要があります。トランザクションのグループ化利用可能な TC サーバー アドレスのリストを取得します。

    /**
     * NettyClientChannelManager.reconnect()
     * Reconnect to remote server of current transaction service group.
     *
     * @param transactionServiceGroup transaction service group
     */
    void reconnect(String transactionServiceGroup) {
        List