DUICUO

RocketMQを3分で分かりやすく解説 - コアコンセプト

わずか 3 分で、適用可能なシナリオや基本的な概念など、RocketMQ の基礎をわかりやすい言葉で学習できます。

これを読んでも理解できなかったら、遠慮なく私を殴りに来てください。

キーワードサマリー

  • 低レイテンシ、高可用性、高信頼性、高同時実行性を備えたメッセージミドルウェア
  • オンラインビジネスに最適
  • 役割は、プロデューサー、コンシューマー、ネームサーバー、ブローカーに分かれています。
  • その他のコア概念には、トピック、メッセージキュー、メッセージ、コンシューマー グループ、サブスクリプションなどがあります。

Q1: RocketMQとは何ですか?

RocketMQはオープンソースの分散メッセージミドルウェアです。低レイテンシ、高可用性、高信頼性、そして高並列性を備えたメッセージキューイングシステムであり、分散システムにおける非同期通信に使用されます。

Q2: メッセージ ミドルウェアとしての RocketMQ と Kafka の違いは何ですか?

メッセージ ミドルウェアとしての RocketMQ と Kafka は、「メッセージ モデル」が非常に似ており、どちらも生成、保存 (メッセージ バックログ)、消費という 3 つの主要部分で構成されています。

主な違いは使用シナリオにあります。

RocketMQは、Kafkaと比較して、スケジュールメッセージ、遅延メッセージ、トランザクションメッセージ(これらはKafkaのメッセージとは異なる概念です)、ブロードキャストメッセージ、メッセージトラッキングなど、いくつかの追加のビジネス機能を提供します。そのため、RocketMQは一般的にオンラインビジネスシナリオで使用されます。

十分に開発されたビッグデータ エコシステムを備えた Kafka は、システム間のデータフロー パイプラインやリアルタイム データ処理などのシナリオで依然として優位性を持っています。

もちろん、RocketMQバージョン5.xでは、イベント処理およびストリーム処理シナリオとの統合がさらに強化されています。しかし、現時点では、関連するエコシステムとアプリケーションの構築は主にAlibaba Cloudが担っており、業界での導入はまだ主流ではありません。

Q3: RocketMQ の基本的なアーキテクチャは何ですか?


RocketMQ 4.x 基本アーキテクチャ

RocketMQ バージョン 4.x には、主に 4 つのロールがあります。

  • プロデューサー:メッセージをパブリッシュする役割。プロデューサーは、ロードバランシングモジュールを通じてメッセージを配信するための適切なブローカークラスタキューを選択します。
  • コンシューマー: メッセージコンシューマーの役割。リアルタイムでメッセージをサブスクライブする機能を提供します。
  • ブローカー: ブローカーは主に、メッセージの保存、配信、取得、およびサービスの高可用性の確保を担当します。
  • NameServer: NameServerはシンプルなトピックルーティングレジストリです。トピックとブローカーの動的な登録と検出をサポートします。

クラウド ネイティブ環境における「ストレージとコンピューティングの分離」に適切に適応するために、RocketMQ 5.x ではデプロイメント アーキテクチャが変更されました。

新しいステートレス プロキシ モジュール Proxy が「計算レイヤー」として追加されました。これにより、プロトコル適応、権限管理、メッセージ管理などの Broker の本来の計算機能がプロキシ モジュールに抽出されます。

一方、ブローカーは、主にメッセージの保存機能を担当する「ストレージ層」に重点を置いています。

これにより、クラウド環境でのリソースのスケジュール管理が向上します。

RocketMQ 5.x 基本アーキテクチャ

Q4: RocketMQ のコアコンセプトは何ですか?

RocketMQ コアコンセプト

前述のように、メッセージ ミドルウェアには同様の論理アーキテクチャがあり、メッセージの生成、保存 (メッセージの蓄積)、および消費という 3 つの主要部分で構成されます。

RocketMQ の場合も、コア コンセプトはこれら 3 つの部分を中心に展開され、合計 7 つのコア コンセプトがあります。

  • メッセージ生成:
  • プロデューサー: RocketMQ 内でメッセージを生成するエンティティ。
  • メッセージの保存
  • トピック: RocketMQにおけるメッセージの送信と保存のためのグループ化されたコンテナ。トピックは複数のキュー(MessageQueue)で構成されます。

  • MessageQueue: RocketMQ でのメッセージの送信と保存のための実際のユニット コンテナー。Kafka のパーティションに類似しています。

  • メッセージ: RocketMQにおける最小の転送単位。最初の送信と保存後は変更できません。

  • メッセージの消費

  • ConsumerGroup: RocketMQ パブリッシュ/サブスクライブ モデルで定義された個別のコンシューマー ID グループ。基盤レベルで実行されている複数のコンシューマーを均一に管理するために使用されます。

  • コンシューマー: RocketMQ内でメッセージを消費する実行中のエンティティ。コンシューマーはコンシューマーグループに割り当てる必要があります。

  • サブスクリプション: RocketMQのパブリッシュ/サブスクライブモデルにおいて、これはメッセージのフィルタリング、再試行、および消費進捗の永続化に関する「ルール設定」を指します。コンシューマーグループは、サブスクリプション関係を定義することで、指定されたグループ内のコンシューマーがメッセージのフィルタリング、消費の再試行、および消費進捗の回復をどのように実装するかを制御します。

要約

  • 低レイテンシ、高可用性、高信頼性、高同時実行性を備えたメッセージ ミドルウェア。
  • オンラインビジネスに適しています。
  • プロデューサー、コンシューマー、ネームサーバー、ブローカーなどの役割に分かれています。
  • その他のコア概念には、Topic、MessageQueue、Message、ConsumerGroup、Subscription などがあります。