Kafka を使用した信頼性の高い高性能な分散メッセージング インフラストラクチャの構築

Kafka を使用した信頼性の高い高性能な分散メッセージング インフラストラクチャの構築

世界は「モバイル」時代へと移行しており、アプリケーションはデータベース テーブルに保存された重要な最終結果だけでなく、アプリケーションの使用中にユーザーが実行したすべてのアクションを含むデータをリアルタイムで提供できる必要があります。ユーザーのクリック、ログ データ、センサー データなどの利用可能な情報はすべて、ユーザー エクスペリエンスの向上、レポートの生成、機械学習システムへのデータの提供などに使用できます。今日、開発者はリアルタイムのイベント ストリームに基づくシステムに重点を置く必要があります。

次の図は、イベント ストリーム処理に基づくアーキテクチャの例を示しています。

Apache Kafka は、高度にスケーラブルなイベントベースのシステムを構築するための最適なソリューションとなっています。 Kafka は、開発者が最新のビジネス ソリューションで使用できる、急速に進化する機能を備えたイベント ストリーミング プラットフォームを提供します。ただし、開発者は多くの場合、既存の Java EE ビジネス ソリューション (IBM MQ や IBM WebSphere Application Platform などのテクノロジーに基づいて構築) をこれらの新しいイベント ストリーミング アーキテクチャに統合する必要があります。

次の例を考えてみましょう。オンライン ストアには、Kafka を使用して、エンタープライズ Java で実装された分散支払いシステムに支払い要求データを送信するモバイル アプリケーションがあります。ソリューションは、支払いリクエストが一度で完全に処理されること(購入者に複数回請求さ​​れることを回避すること)を絶対に保証する必要があります。ただし、分散システムでは障害は避けられないため、ソリューションでは障害を適切に処理する必要があります。

Apache Kafka によるメッセージング

Apache Kafka は、マイクロサービス アーキテクチャやクラウドベースの環境で広く使用されている、イベント ストリーム処理用の分散システムです。同じプラットフォーム内でメッセージング、ストレージ、イベントの処理を提供します。

次の図は、Kafka クラスター インフラストラクチャを介してメッセージを交換するプロデューサーとコンシューマーを含む、Apache Kafka コンポーネントの基本的なトポロジを示しています。

Kafka には多くの利点がありますが、次のような問題も依然として存在します。

  • メッセージ処理が失敗した場合、手動補正ロジックを実装する必要があり、その結果、メッセージの処理が失敗する可能性があります。
  • XAトランザクションをサポートしていません
  • 消費者向けアプリケーションで1回限りの配信処理を確実に実行
  • エンタープライズソリューションに統合するには、追加の開発と保守作業が必要です。

Kafka の統合問題を解決するには、トランザクション ログ、リカバリ ログ、XA トランザクションなどの従来のメッセージング トポロジの概念を適用できます。 Java EE コネクタ アーキテクチャ (JCA) に基づいてリソース アダプタを実装できます。この JCA リソース アダプターを使用すると、Kafka メッセージ処理のためにアプリケーション サーバーに ACID 機能を提供できます。この JCA リソース アダプターは、エンタープライズ Java アプリケーションとのシームレスな Kafka 統合を提供できます。

JCA リソースアダプタの実装

Java EE コネクタ アーキテクチャは、拡張可能で非常に安全なトランザクション メカニズムのセットを定義します。 JCA リソース アダプターは、IBM Websphere Application Server、IBM Business Process Manager、JBoss、WebSphere Liberty、Glassfish、Weblogic などの任意の Java EE 準拠アプリケーション サーバーにインストールできます。

Java EE コネクタ アーキテクチャ仕様では、エンタープライズ アプリケーションと Kafka などのエンタープライズ情報システム間の通信をサポートするための一連の標準契約も提供されます。 JCA リソース アダプターをアプリケーション サーバーにプラグインすると、すべてのシステム レベルのメカニズム (トランザクション、接続管理、クラッシュ回復、エラー追跡、ログ記録) を処理して Kafka 統合をサポートできます。 JCA リソース アダプターは、統合する必要があるエンタープライズ アプリケーションからすべての Kafka 通信ロジックを非表示にします。 JCA リソース アダプターを実装することで、エンタープライズ アプリケーション プロバイダーは、Kafka 統合に関連する低レベルのロジックを気にすることなく、ビジネス ロジックとプレゼンテーション ロジックの実装に集中できます。したがって、JCA リソース アダプターは一度開発するだけで、さまざまなアプリケーションで再利用できます。

これをオンライン ストアの支払いシナリオに関連付けて、指定されたソリューション システムのコンテキストを示す次の図を見てみましょう。

モバイル アプリケーションは、リソース アダプタを介してエンタープライズ支払いアプリケーションと統合されている Kafka に支払い要求データを送信します。さらに、このアダプターを使用して、支払い通知を Kafka にプッシュすることもできます。このアダプタは、エンタープライズ支払いアプリケーションおよび通知システムに渡される XA トランザクションを開始します。したがって、支払い要求処理に関連するすべてのタスクは同じグローバル トランザクション内で実行され、同時に完了または失敗します。この設計では、データの読み取りや書き込みを行うトピックに加えて、Kafka で再試行、デッドレター、トランザクション ログのトピックも設定します。

ここで、モバイル アプリケーションとの間のメッセージの処理について詳しく見ていきましょう。

受信ストリーム

この支払いシナリオでは、着信フローは、支払い要求データを Kafka に送信するオンライン ストアのモバイル アプリケーションによって開始される通信を表します。リソース アダプターは Kafka 接続を提供し、アプリケーション サーバー上に存在するメッセージ エンドポイントにメッセージを非同期的に配信します。これは、JCA 仕様で定義されたメッセージインフロー契約を使用して実現されます。

Kafka JCA リソース アダプターは、エンドポイント アクティベーション構成用の構成プロパティのセットを含むアクティベーション仕様 JavaBean を実装します。これらの構成の詳細は、アプリケーション サーバー構成の一部として定義されます。

リソース アダプターは、受信 Kafka トピックからの支払い要求のバッチを定期的にポーリングします。データ ポーリングが正常に完了すると、データ バッチを反復処理し、エンドポイント インスタンスにメッセージを非同期的に配信します。各メッセージ エンドポイントには複数のエンドポイント インスタンスが存在する可能性があるため、メッセージを並行して消費し、高いスループットを実現できます。

Kafka コンシューマー オフセットは、メッセージの配信がスケジュールされた直後にコミットされるため、ブロックされたバッチの問題を回避できます。この設計が可能なのは、リソース アダプターが、Kafka で設定する必要がある再試行、デッドレター、およびトランザクション ログ トピックを通じてフェイルオーバー プロセスを実装するためです。この場合、エンドポイントは XA トランザクションをサポートする必要があり、アトミック メッセージングの使用を可能にするためにエンドポイントにデータを送信する前にトランザクション コンテキストを作成する必要があります。

アプリケーション サーバーがトランザクションを中止した場合、エンドポイント インスタンスによって実行されたすべての作業はロールバックされ、メッセージは Kafka 再試行トピックに転送される必要があります。

アダプターは、Kafka 再試行トピックからのメッセージを消費し、再処理します。設定されたメッセージ処理の再試行回数が経過すると、アダプターはメッセージを Kafka デッドレター トピックに配信します。デッドレター トピックに送信されたメッセージには貴重なビジネス データが含まれているため、このトピックを監視することが重要です。

流出フロー

送信フローは、エンタープライズ アプリケーションによって開始された Kafka 通信を表します。私たちの場合、これはモバイル アプリケーションに支払い確認を送信するために使用される通知システムです。 JCA 仕様では、アプリケーション サーバーが Kafka 接続をプールできるようにする接続管理契約が定義されており、多数のクライアントをサポートするスケーラブルな環境が提供されます。

Kafka の送信接続構成の詳細は、Managed Connection Factory JavaBean を使用して定義されます。これらの構成の詳細を使用すると、管理者と開発者はアダプターを使用して Kafka プロデューサーを構成し、信頼性、可用性、スループット、レイテンシ、トランザクション サポートなどの必要な機能を決定できます。これらの構成の詳細は、アプリケーション サーバー構成の一部として定義されます。

Kafka JCA リソース アダプターは、Common Client Interface (CCI) および Java Message Service (JMS) インターフェイスを実装する Kafka 接続ファクトリと Kafka 接続を公開します。アプリケーション コンポーネントは、Java Naming and Directory Interface (JNDI) 名を使用して接続ファクトリを検索します。接続ファクトリを正常に取得すると、アプリケーションはそれを使用して接続を取得し、Kafka にアクセスします。これにより、現在 IBM MQ や Active MQ などの JMS メッセージング プロバイダーにデータを送信している通知システム アプリケーションに Kafka 統合をシームレスに追加できるようになります。

リソース アダプタの送信フローは、低レベルの Kafka 通信ロジックをカプセル化し、以下を提供します。

  • 接続のマージ
  • Kafka のトランザクションメカニズムを使用して、配信を 1 回のみに抑える
  • Kafka の障害を堅牢な方法で識別、記録、処理する
  • 分散システムで Kafka を介して信頼性の高いメッセージ処理を提供するために XA トランザクションを実装します。

送信フローのトランザクションを管理するために、Kafka リソース アダプターは JCA 仕様で定義されたトランザクション管理契約を使用できます。

この場合、XA トランザクションをサポートするように接続ファクトリを設定する必要があり、クライアントが接続を取得したときにアダプタが Kafka トランザクションを開始する必要があります。アプリケーション サーバーが Kafka トランザクションをロールバックするたびに、トランザクションは中止されます。 XA トランザクションのコミットが発生すると、トランザクション マネージャーは実行中のトランザクションで使用されるすべてのリソースに対して 2 フェーズ コミット プロトコルを実行します。これにより、管理対象リソースへのすべての読み取りおよび書き込みアクセスが完全にコミットされるか、完全にロールバックされることが保証されます。

最後に、リソース アダプターは、トランザクション データを Kafka トランザクション ログ トピックに書き込むことで、実行中のトランザクションを追跡します。トランザクション ログ トピックに書き込まれたデータは、分散システムで信頼性の高いメッセージ処理を提供するためのクラッシュ回復処理に使用されます。

結論

Kafka JCA アダプターは、標準的なエンタープライズ Java ソリューション向けに JMS と Kafka イベント処理プラットフォームの「プラグ アンド プレイ」統合を提供するように設計されています。この設計により、補正ロジックを実装する必要なく、Kafka を既存のエンタープライズ アプリケーションとシームレスに統合できます。アプリケーション サーバーは、アダプターを通じて、エンタープライズ アプリケーションが Kafka 接続を確立し、トランザクション管理を実行するために依存するインフラストラクチャとランタイム環境も提供します。

<<:  金融グレードのクラウドサービスであるPing An Cloudは、保険業界の革新と開発を支援します。

>>:  クラウド データ ウェアハウス Snowflake、Panoply、Repods の包括的な比較

推薦する

ecvps5.95USD/月512MB RAM 完全管理型 VPS

ecvpsは2009年に設立されたVPS事業です。社長は香港出身です。ネットユーザーによると、社長は...

OpenStack がインテリジェントなオープンソース インフラストラクチャの自動化を実現する Ussuri バージョンをリリース

[51CTO.comより引用] 2020年、新型コロナウイルスの突発的な流行により、人々の仕事や生活...

reprisehosting-シアトル/XenVPS/Windows/無制限トラフィック/年間支払いは20ドルから

reprisehosting の VPS の価格は安くはありませんが、Windows をサポートして...

Sentris - 3年4.49ドルのVPSが再入荷、新SSDシリーズKVM

SentrisのVPSは、市場で圧倒的に最も破壊的な商人です。基本的に、VPS市場をキャベツよりも安...

検索エンジンに好まれるウェブサイトを構築する方法

検索エンジンマーケティングは、オンラインマーケティングの最も重要な部分の1つになりました。現在、シン...

常に変化する状況の中で、Baiduをあなたのウェブサイトのようにする方法

トラフィックとユーザーは、ウェブサイトの 2 つの重要な生命線です。この 2 つは互いに補完し合って...

extravm ロサンゼルス データセンターの簡単なレビュー - 100G の高防御 + 10Gbps の帯域幅 + Ryzen 3900X + NVMe VPS

Extravm の以前の VPS は、OVH データ センターか米国中部のダラスにあり、特別な注目を...

大容量ハードディスク VPS: Ftpit - 年間 35 ドル / メモリ 1g / コア 3 個 / ハードディスク 100g / トラフィック 2T / G ポート / ロサンゼルス

大容量ハードドライブ搭載のVPS、Ftpitをご紹介します。大容量ハードドライブ搭載のbackups...

Baidu Green Radish Algorithm 2.0 の影響を受ける業界の内訳

7月1日以降、百度の青大根アルゴリズムは再びアップグレードされ、そのターゲットはより具体的になり、一...

単一のマーケティングモデルを持つウェブサイト所有者は、キャリアを変えるという課題に直面しなければならない

外部リンクツールの拒否から外部リンク判定の議論まで、また外部リンク判定の議論からザクロアルゴリズムま...

中国聯通:コアシステムの全面的なクラウド再構築が完了

6月9日、中国聯通IT研究開発センター総経理、党委員会書記、聯通ソフトウェア研究所所長の耿祥東氏は、...

人材ウェブサイト上でマイクロ採用プラットフォームを構築する方法についての簡単な説明

過去を遡ると、10年以上前、企業は従業員を募集するために主に現場での就職説明会や求人広告の掲示、また...

raksmart: サイト全体の 10% 割引コード、生涯割引、サンノゼ コンピュータ ルーム、CN2 GIA

raksmartは、独自のサンノゼデータセンターを持つ古いブランドです。主に独立したサーバーのレンタ...

AIはクラウドコンピューティング大手の次の競争の焦点となる

人工知能が今日の情報技術分野で最もホットな話題であることは疑いの余地がなく、情報産業を豊かにし、改善...

ウェブマスターネットワークニュース: Baidu がクラウドストレージリソースを公開、ビットコインが通貨に関する議論を巻き起こす

1. Amazonのサードパーティ販売業者が海賊版書籍を販売:1日あたり約1,000冊の海賊版書籍が...