RocketMQ の基本概念

目次

1 はじめに

2. アーキテクチャ

3. 中心となる概念


1 はじめに

RocketMQ は、Alibaba Group によって元々開発され、オープンソース化されたオープンソースの分散メッセージング ミドルウェアです。分散システムに信頼性が高く、高性能でスケーラブルなメッセージ通信機能を提供することを目的としています。RocketMQ、RabbitMQ、KAFKA が 3 つの主流メッセージ ミドルウェアとして挙げられています。

一般に、MQ はその特性を次の 3 つの次元から分析できます。

  1. スループットとレイテンシ
  2. 信頼性
  3. メッセージモデルの豊富さ

1. スループットとレイテンシ:

メッセージミドルウェアは「トラフィックのピークカット」を実現するためによく使われるコンポーネントであり、1回の時間単位に処理できるメッセージの量は非常に重要な指標となります。RocketMQ は元々 Ali の "Double イレブン" 用に設計され、現在は "Double イレブン" 期間中のシステム スループットを確保するために使用されるコア コンポーネントの 1 つであり、次の 3 つの側面から高スループットと低遅延を保証します。

  • 分散アーキテクチャ RocketMQ は、メッセージの保存と処理を複数のノードに分散できる分散アーキテクチャで設計されています。このようにして、メッセージの並列処理が実現され、システムのスループットと同時実行パフォーマンスが向上します。
  • ゼロコピー、RocketMQ はメッセージ送信のプロセスにゼロコピーテクノロジーを採用しており、ユーザー空間とカーネル空間の間でデータが複数コピーされることを回避します。これにより、不必要なデータ コピー操作が削減され、データ送信効率が向上し、待ち時間が短縮されます。
  • RocketMQ は、メッセージ インデックス ベースのアプローチを使用して、メッセージの検索と取得を高速化します。メッセージ インデックスを作成すると、メッセージが保存されている場所をすばやく特定でき、メッセージを読む効率が向上します。

2. 信頼性

メッセージの信頼性、つまりメッセージが簡単には失われません。RabbitMQ と同様に、RocketMQ はメッセージの信頼性が高く、次の方法を使用してメッセージの信頼性を確保します。

  1. 永続性。RocketMQ では、電力損失を防ぐためにメッセージをディスクに永続化できます。
  2. 確認と応答では、RocketMQ は公開確認と消費応答をサポートしています。メッセージが交換に送信された後、プロデューサーに確認を返すことができ、コンシューマーがメッセージを正常に消費した後、MQ に応答できます。

3. メッセージモデルの豊富さ

RocketMQ は 5 つのメッセージ モデルをサポートします。

  1. ピアツーピアモデル
  2. パブリッシュ・サブスクライブ・モデル
  3. リクエストレスポンスモデル
  4. 時限メッセージモデル
  5. シーケンシャルメッセージモデル

メッセージ モデルの豊富さは Kafka よりも高いですが、RabbitMQ よりは低いです

適切なシーン:

上記の 3 つの側面から、RocketMQ は、信頼性が高く、高スループット、低遅延の分散メッセージ通信を必要とするシナリオに適しています。以下は、RocketMQ が適用できる特定のビジネス シナリオの例です。

  1. 電子商取引の注文処理: 電子商取引プラットフォームでは、注文処理は重要なビジネス リンクです。RocketMQ を使用すると、注文の作成、支払いステータスの更新、在庫の控除など、注文関連のメッセージを非同期に処理できます。これにより、高スループットと低遅延を実現しながら、注文メッセージの信頼性の高い配信と順次処理が保証されます。

  2. リアルタイム ログ処理: 大規模な分散システムでは、ログ処理はトラブルシューティング、パフォーマンス監視、データ分析にとって重要です。RocketMQ を使用すると、システムによって生成されたリアルタイム ログ メッセージを収集、送信、処理できます。大量のログ データを迅速に処理し、ログ メッセージの信頼性の高い配信と順次処理を保証します。

  3. モバイル アプリケーションでのプッシュ通知: モバイル アプリケーションでのプッシュ通知では、多くの場合、通知メッセージをユーザーに迅速かつ確実に配信する必要があります。RocketMQ はメッセージ プッシュのバックエンド インフラストラクチャとして使用でき、大規模なメッセージ プッシュと即時通知をサポートし、メッセージの信頼性の高い配信と順次処理を保証します。

  4. IoT デバイス通信: IoT の分野には、大量のデバイスおよびセンサー データの収集と処理が含まれます。RocketMQ はデバイス間のリアルタイム通信に使用でき、デバイスによって生成されたデータを処理と分析のためにクラウドに送信します。大規模な IoT シナリオに適した、信頼性の高いメッセージ配信と高スループット機能を提供します。

  5. 金融取引システム: 金融分野では、取引システムにはメッセージの信頼性と順序について非常に高い要件が求められます。RocketMQ は、支払い通知、資金決済、取引確認などの金融取引に関連するメッセージを処理するために使用できます。トランザクション メッセージのサポートと順次メッセージ処理機能を提供し、トランザクションの一貫性と順序を確保します。

2. アーキテクチャ

RocketMQ クラスター全体のアーキテクチャはマイクロサービス アーキテクチャに似ています。ノード情報を保存するネーム サーバーがあります。プロデューサーとコンシューマーの両方がネーム サーバーにアクセスしてブローカー情報を取得し、特定のブローカーを見つけてメッセージを送受信します。 。ブローカーは、フォールト トレランスを実現するために、マスター/スレーブ方式で相互にバックアップできます。

3. 中心となる概念

  • メッセージ、メッセージ、データユニット。トピック、タグ、ボディで構成されます。body は送信される特定のデータです。
  • プロデューサー、メッセージの送信者。RocketMQ のメッセージ キューにメッセージを送信する役割を果たします。
  • コンシューマ、メッセージ受信者。特定のメッセージ トピック (Topic) をサブスクライブし、RocketMQ のメッセージ キューからメッセージを取得して処理します。
  • トピック、メッセージの論理分類。メッセージのトピックまたはラベルに似ています。プロデューサーがメッセージを送信するときは、メッセージの送信先のトピックを指定する必要があります。
  • tag はメッセージへの追加タグであり、トピックの下でメッセージをより詳細に分類するために使用されます。コンシューマはオプションでタグに基づいてメッセージをサブスクライブし、フィルタリングできます。
  • メッセージキュー、メッセージトピックのパーティションまたはシャード。各トピックは複数のメッセージ キューに分割できるため、メッセージを並列処理してシステムのスループットと同時実行パフォーマンスを向上させることができます。
  • メッセージの保存と転送を担当するブローカー。プロデューサからメッセージを受信し、適切なメッセージ キューに保存します。同時に、Consumer からの消費リクエストも受信し、Consumer にメッセージを配信します。
  • ネーム サーバー (ネーム サービス) は、トピック、プロデューサー、コンシューマーなどの登録と検出を含む、RocketMQ システム全体のメタデータ情報の管理を担当します。プロデューサーとコンシューマーは、ルーティング情報とメタデータを取得するために、起動時に Namesrv と対話する必要があります。

おすすめ

転載: blog.csdn.net/Joker_ZJN/article/details/131711092