EventBridge に基づいてメッセージング統合アプリケーションを簡単に構築

著者: チャン・フォン

序文

この記事では、主に Alibaba Cloud EventBridge に基づくメッセージ統合機能を紹介し、メッセージング製品に対する現在の熱い需要に基づいて、機能の範囲から実際のシナリオまで EventBridge のメッセージ統合ソリューションの概要を説明します。

まずは現在のニュース状況から始めましょう

メッセージ キューは、アプリケーションの分離とトラフィックのピークの削減と谷の埋め込みのための効果的なツールとして、さまざまな分散サービスの開発者によって長年にわたって広く使用されてきました。ビジネスの継続的な開発と反復に伴い、ますます多くのサービスが安定性と保守性の課題に直面しており、メッセージ キューの需要は通常のサブスクリプション消費に限定されなくなりました。ここでは、3 つのシナリオにおける機能要件を示します。

メッセージルーティング機能

ここでの主な需要シナリオは、データ同期とリモート災害復旧です。ほとんどのメッセージ キュー ユーザーにとって、メッセージ キュー内のビジネス データは通常、1 種類のサービスによって消費および処理されます。ユーザーが複数のアプリケーションを持っており、これらの異なるアプリケーションのデータを要約して分析するためのグローバル ビューが必要な場合、メッセージ ルーティングが最適です。は避けられない能力要件となっています。同様に、データの災害復旧のために、大規模なクラウド ユーザーは通常、異なるリージョンのメッセージ データを同期する必要があります。

ただし、クラウド上でメッセージ ルーティングを実装するのは簡単な作業ではない可能性があります。ご存知のとおり、クラウド上のリージョン間のネットワークは厳密に分離されているため、ユーザーがリージョン間でデータを転送したい場合は、CEN などのネットワーク接続ソリューションを使用するか、データ送信にパブリック ネットワークを使用する必要があります。前者では、事業設立当初に完全なネットワーク計画が必要であり、CEN のコストも高額になりますが、後者では、パブリック ネットワーク帯域幅のコストと、データをパブリック ネットワークに公開することで直面するセキュリティ問題を考慮する必要があります。

メッセージ処理能力

このようなシナリオを想像してください。電子商取引プラットフォームでは、ユーザーの注文情報は RocketMQ によって伝送されます。下流の支払い、在庫、マーケティング部門はすべて、注文情報を使用する必要があります。歴史的および技術スタックの理由により、RocketMQ によって使用されるメッセージは、これらの部門 製品の種類は異なります (RocketMQ、RabbitMQ、Kafka です)。これらの部門が必要とするのは、元のメッセージの全量ではなく、関心のあるメッセージの一部です。同時に、独自のインターフェイスもデータ スキーマに特定の要件を課し、元のメッセージが配信されることを期待しません。

現時点では、単純なメッセージ ルーティングではニーズを満たすことができないようです。このタスクを製品に引き渡す場合、この製品は 2 つの機能を満たす必要があります。1 つ目は、メッセージを他の種類のメッセージ製品にルーティングする機能で、もう 1 つはデータをフィルタリングおよび処理する機能です。

エコロジー拡張能力

従来のメッセージ ユーザーの場合、メッセージのライフ サイクルは、自分のビジネスの送信段階と消費段階だけです。しかし、あらゆるものがクラウド上にある現在、強力な機能を備えたさまざまなクラウド製品を利用して、メッセージの上流から下流までを豊かにすることができれば、メッセージデータの潜在的な価値が大きく開拓されることになります。たとえば、ユーザーは、オフライン データ処理機能を実現するために、SLS ログ データをメッセージ キューにインポートする必要がある場合や、アプリケーション全体をサーバーレスにするために、メッセージ キュー内のデータを使用して関数計算をトリガーする必要がある場合があります。

しかし現状では、さまざまなエコロジー製品のドッキングをユーザー自身が導入すると、開発工数の多さやその後のメンテナンスの煩雑さが課題となります。最も理想的な方法は、十分なエコシステムに接続でき、できるだけ簡単に使用できる、すぐに使えるツールを用意することです。では、上記の問題を解決し、メッセージ ユーザーが便利で信頼性の高いメッセージ統合機能を実現できるクラウド製品はあるのでしょうか? ここで、今回の主役である Alibaba Cloud イベント バス EventBridge を紹介する必要があります。

イベントバスとメッセージの統合

イベント バス EventBridge は、Alibaba Cloud が提供するサーバーレス イベント バス サービスで、Alibaba Cloud サービス、カスタム アプリケーション、および SaaS アプリケーションの標準化および集中化された方法での接続をサポートし、標準化された CloudEvents 1.0 プロトコルを通じてこれらのアプリケーション間で通信できます。イベント。

EventBridge の中核となる機能は、統合イベント サービス、データ パイプライン、オープン性と統合の 3 つの点に要約できます

  • 統合イベントサービス

    EventBridge が登場する前は、各クラウド製品のイベントは互いに独立しており、ユーザーはすべてのクラウド製品イベントを 1 か所で収集して処理することができませんでした。EventBridge の登場はこの状況を打破し、ほとんどのクラウド製品イベントをクラウド上で収集し、ユーザー側で統一的かつ体系的な表示操作を提供することで、クラウド ユーザーがクラウド製品イベントをより体系的に分類して処理できるようにします。

  • データパイプライン

    EventBridge は、クラウド上のイベントをカバーするだけでなく、データの接続と対話を実現するデータ パイプライン機能も提供します。たとえば、ユーザーは EventBridge を使用して、メッセージ キュー内のデータを他のメッセージ キューにインポートするメッセージ ルーティング タスクを作成したり、SLS のログ データをメッセージ キューにインポートするタスクを作成したりできます。現在、EventBridge はソース側とターゲット側の両方で幅広い製品をサポートしています。

  • オープンで統合された

    EventBridge は、さまざまなテクノロジー スタックを使用する開発者が EventBridge を迅速かつ便利に使用できるように、複数の言語で SDK を公開します。同時に、EventBridge はクラウド上の標準的な Cloudevents SDK とも互換性があり、ユーザーが業界のオープンソース SDK を使用している場合でも、簡単に EventBridge にイベントを配信できます。イベントスキーマ定義に関して、EventBridge はクラウド上のイベントの現在の事実上の標準である Cloudevents 1.0 を採用しており、他のイベント サービスを使用している顧客は Alibaba Cloud EventBridge にシームレスに移行でき、Alibaba Cloud EventBridge 上のイベントにも迅速にアクセスできます。他の主流の EDA エンジンはベンダー ロックインを回避します。

最初の部分で述べたメッセージ ユーザーが直面する問題に対応して、EventBridge は、メッセージ フロー (メッセージ ルーティングとも呼ばれる) 機能ソリューション、メッセージ処理機能ソリューション、およびエコロジカル サポート機能ソリューションを含む、メッセージ統合の分野で完全なソリューションを提供します。

メッセージフローソリューション

現在、EventBridge は、RocketMQ、RabbitMQ、Kafka、MNS、MQTT など、クラウド上のほとんどのメッセージング製品へのアクセスをサポートしています。これらのメッセージング製品を使用するユーザーは、対応するメッセージング製品のコンソール、メッセージの流入および流出ページ、または EventBridge のコンソールで、対応するルーティング タスクを作成できます。

一部のクラウド ユーザーのニーズに応えて、EventBridge はクロスリージョンおよびクロスアカウントのメッセージ ルーティングもサポートしています。

クロスリージョンのシナリオで、ユーザーが北京から上海へのメッセージ ルートを作成する必要がある場合、メッセージ キュー コンソールのメッセージの流入と流出のページで、対応するソース インスタンス情報とターゲット インスタンス情報を選択し、1 つの情報から作成して開始します。クリック。

ユーザーにクロスアカウントのメッセージ ルーティングのニーズがある場合 (たとえば、会社のさまざまな部門が独立したアカウントを持ち、各部門のデータを要約する必要があるシナリオ)、EventBridge のイベント バスを使用して、異なるアカウント間のデータの同期を完了できます。アカウント。タスク作成手順の詳細については、EventBridge の公式ドキュメントを参照してください。

ユーザー自身のニュース ソースがクラウド製品ではない場合、EventBridge は現在、ユーザーが迅速に接続できるようにするさまざまな便利な方法を提供しています。ユーザーが独自に構築した RocketMQ などのメッセージング サービスをクラウド上に構築する場合、EventBridge はユーザーが簡単な構成でメッセージ データに迅速にアクセスできるようにすでにサポートしています。ユーザー サービスが自作のコンピューター ルームに展開され、クラウドでサポートされていないメッセージング製品を使用している場合、ユーザーは EventBridge が提供する SDK を使用してイベントをプロアクティブに配信し、それをさまざまなダウンストリーム クラウドに書き込むこともできます。クラウド製品、このタイプのシナリオは、クラウドに移行する顧客に適しています。

メッセージ処理ソリューション

EventBridge は現在、豊富なイベント抽出および処理機能を提供しており、ユーザーはビジネス ニーズを満たすためにさまざまなフィルタリングおよび処理ルールを構成できます。

たとえば、ユーザーのイベントには注文タイプのフィールドがあり、コンテンツにはオンライン注文とオフライン注文の 2 つのタイプが含まれます。ユーザーは、注文タイプがオンライン注文であるデータをフィルタリングして、オンライン ビジネスを処理するファンクション コンピューティング サービスに配信することを期待しています。ここでは、フィルタリング ルールで一致する指定された値を参照し、フィルタリング ルールの対応するフィールドの値をオンライン注文に設定できます。

指定された値のマッチングに加えて、EventBridge は、ほとんどの顧客シナリオの要求を満たすために、プレフィックス マッチング、サフィックス マッチング(マッチングを除く)、数値マッチング、配列マッチング、複雑な組み合わせマッチングなどのロジックもサポートしています。

ユーザーは、イベントのコンテンツがそのままターゲットに配信されることを期待せず、配信する前に特定の形式に処理することを期待する場合があります。EventBridge は、イベント変換機能も提供します。現在サポートされているコンバーターの種類には、完全イベント、部分イベント、定数、テンプレート、および関数計算コンバーターが含まれます。これらのコンバーターにはさまざまな役割があり、これらを組み合わせて使用​​すると、ユーザーがイベント本文からいくつかの貴重なフィールドを抽出し、必要に応じてターゲット側で必要なデータ形式に結合するのに役立ちます。

メッセージング エコシステム ソリューション

閉ループ メッセージング エコロジーの問題に対応して、EventBridge の介入により、上流および下流のエコロジーの豊かさを効果的に拡大できます。

メッセージ流入側では、EventBridge は MNS や Kafka などのメッセージ製品、DTS、クラウド管理と制御、アラーム イベント、カスタム イベントなどのデータベース製品へのアクセスをサポートしており、ユーザーはさまざまなイベント データを簡単に取得できます。

メッセージのアウトフロー側では、EventBridge は FC や SAE などのコンピューティング製品、データベース製品 RDS、DingTalk や WeChat などの通知製品、http ターゲットやサードパーティの Saas アプリケーションなどの一般的な API のトリガーをサポートします。メッセージング製品のユーザーは、簡単な構成でメッセージをダウンストリーム サービスにインポートし、ビジネス価値を生み出すことができます。

シナリオと実際の戦闘

以下では、いくつかのシナリオを列挙し、メッセージング製品コンソールで対応するタスクを作成する手順を見ていきます。

メッセージルーティングのシナリオ

最初のシナリオは、クロス アベイラビリティ ゾーン メッセージ ルーティング シナリオであり、災害復旧やデータ集約が必要な場合に、この問題に直面する可能性があります。

図に示すように、ユーザーのビジネスは杭州、北京、青島の 3 つの地域に展開されています。各リージョンは、このリージョンのビジネス データを独立して処理します。ただし、グローバルデータディスクサービスを構築するには、ユーザーが地域ごとのメッセージプロダクトデータを集約する必要があります。

ここで、ユーザーは EventBridge のメッセージ統合機能を使用して、杭州から北京、青島から北京へのメッセージ ルーティング タスクを作成し、独立したコンシューマー グループを使用してこれらのメッセージを消費して、リージョン間のメッセージ データの集約を完了できます。

ただし、注意すべき点が 1 つあります。リモートの災害復旧シナリオでは、ユーザーが双方向ルーティングを構成する必要がある場合、データ ループを回避するために適切なフィルタリング ルールを構成する必要があるということです。

次に、このクロスリージョン メッセージ ルーティング タスクを作成する手順を見てみましょう。これらのサービスは EventBridge によって提供されるため、ユーザーは事前に EventBridge サービスをアクティブ化し、概要ページで関連するクラウド製品サービスにアクセスするための EventBridge 権限を付与する必要があります。

ここでは例として、北京から上海への RocketMQ メッセージ ルーティング タスクを作成します。まず、RocketMQ コンソールにログインします。

  1. コンソールの左側のページで、「メッセージ アウトフロー」を選択し、「タスクの作成」をクリックします。
  2. 作成タスクバーで、メッセージ キュー RocketMQ をアウトフロー タイプとして選択します。
  3. 次に、ポップアップ タスク構成ドロップダウン パラメーターで、ソース地域として北京を選択し、実際の状況に応じて RocketMQ インスタンス情報を入力します。

  1. ターゲット側で、受信する Shanghai RocketMQ インスタンスを選択し、関連情報を入力します。

  1. 必要に応じてメッセージ フィルタリングとメッセージ変換を入力し、[OK] をクリックします。
  2. 1 ~ 2 分間待機すると、メッセージ ルーティング タスクがすでに実行されていることがわかります。これは、メッセージ ルーティング タスクが正常に作成され、実行されたことを示しています。

オフライン処理シナリオ

2 番目のシナリオは、メッセージ オフライン データ分析シナリオです。

MQ でメッセージをビジネスで即座に利用できるだけでなく、ユーザーはデータ分析やアラーム設定のためにメッセージを SLS にインポートする必要もあります。同時に、ユーザーには、SLS に書き込まれるコンテンツ形式に対する特定の要件もあります。

ここでユーザーは、メッセージの流入および流出ページでタスクを作成し、EventBridge 経由でデータを SLS にインポートできます。タスク構成プロセス中に、図の例の変数とテンプレートの構成に従って、元のデータ コンテンツの名前フィールドと状態フィールドを抽出し、要件に従って新しいコンテンツ フォーマットを生成できます。

RocketMQ を例として、RocketMQ コンソールのメッセージ アウトフロー ページで、[タスクの作成] をクリックします。

  1. アウトフロー タイプで Log Service SLS を選択します。
  2. 以下のタスクパラメータ設定では、ソース側で対応する RocketMQ インスタンス情報を選択し、ターゲット側で対応する SLS プロジェクトと logStore を選択します。

  1. [ログ コンテンツの形式] セクションで、図に示されている変数とテンプレートの設定に従って、対応するコンテンツを入力し、[OK] をクリックします。

  1. 1 ~ 2 分間待機すると、SLS にメッセージを書き込むタスクがすでに実行されていることがわかります。これは、タスクが正常に作成され、実行されたことを示しています。

上記は、Alibaba Cloud EventBridge のメッセージ統合機能の紹介です。将来的には、EventBridge はメッセージング分野の機能のサポートも強化し、ユーザーがメッセージ データの価値を低コストで実現できるようにする予定です。興味のある友人は、EventBridge 公式 Web サイトと公式ドキュメントをフォローして、最新の製品ニュースをできるだけ早く入手してください。

オープンソース フレームワーク NanUI の作者がスチールの販売に切り替えたため、プロジェクトは中断されました。Apple App Store の無料リストのナンバー 1 はポルノ ソフトウェア TypeScript です。人気が出てきたばかりなのに、なぜ大手はそれを放棄し始めるのでしょうか。 ? TIOBE 10月リスト:Javaが最大の下落、C#はJavaに迫る Rust 1.73.0リリース AIガールフレンドにイギリス女王暗殺を勧められた男性に懲役9年の実刑判決 Qt 6.6正式リリース ロイター:RISC-Vテクノロジーが中米テクノロジー戦争の鍵となる 新たな戦場 RISC-V: 単一の企業や国に支配されない レノボ、Android PC の発売を計画
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/3874284/blog/10117564