本文へ移動
バージョン: 5.0

RocketMQを選ぶ理由

RocketMQを選ぶ理由

アリババにおけるRocketMQの開発初期段階では、非同期通信、検索、ソーシャルネットワーキングのアクティビティフロー、データパイプライン、取引プロセスなど、さまざまな用途に使用していました。取引ビジネスの成長に伴い、メッセージングクラスタへの負荷が増加していることに気づきました。

ActiveMQ IOモジュールの性能を観察・分析した結果、キュー数と仮想トピック数の増加に伴いボトルネックが発生していることが判明しました。スロットリング、サーキットブレーカー、サービスのダウングレードなど、さまざまな方法でこの問題に対処しようと試みましたが、どれも満足のいく結果ではありませんでした。人気のメッセージングソリューションであるKafkaの使用も検討しましたが、後述する理由から、低遅延と高信頼性という私たちの要件を満たしませんでした。その結果、従来のPub/Subから高ボリューム、リアルタイム、ゼロエラーのトランザクションシステムまで、幅広いユースケースに対応できる新しいメッセージングエンジンの開発を決定しました。

Apache RocketMQは、そのシンプルなアーキテクチャ、豊富なビジネス機能、そして極めて高いスケーラビリティにより、企業開発者やクラウドベンダーに広く採用されています。10年以上にわたる幅広いシナリオでの磨き上げを経て、RocketMQは金融グレードの信頼性の高いビジネスメッセージの業界標準となり、インターネット、ビッグデータ、モバイルインターネット、IoTなどの分野で広く使用されています。

ヒント

次の表は、RocketMQ、ActiveMQ、Kafkaの比較を示しています。

RocketMQ vs. ActiveMQ vs. Kafka

メッセージング製品クライアントSDKプロトコルと仕様順序付きメッセージスケジュールされたメッセージバッチメッセージブロードキャストメッセージメッセージフィルタサーバートリガーによる再配信メッセージストレージメッセージの遡及メッセージの優先順位高可用性とフェイルオーバーメッセージ追跡設定管理と運用ツール
ActiveMQJava、.NET、C++などプッシュモデル、OpenWire、STOMP、AMQP、MQTT、JMSをサポート排他コンシューマまたは排他キューで順序を保証できますサポートサポートなしサポートサポートサポートなしJDBCを使用した高速な永続化と、高性能なジャーナル(levelDB、kahaDBなど)をサポートサポートサポートストレージに依存してサポート。levelDBを使用する場合はZooKeeperサーバが必要ですサポートなしデフォルト設定は低レベルであるため、ユーザーは設定パラメータを最適化する必要がありますサポート
KafkaJava、Scalaなどプルモデル、TCPをサポートパーティション内のメッセージの順序を保証サポートなし非同期プロデューサーでサポートサポートなしサポート。Kafka Streamsを使用してメッセージをフィルタリングできますサポートなし高性能ファイルストレージサポート。オフセットで示されますサポートなしサポート。ZooKeeperサーバが必要ですサポートなしKafkaは、設定にキーバリューペア形式を使用します。これらの値は、ファイルから、またはプログラムで提供できます。サポート。ターミナルコマンドを使用してコアメトリクスを公開します
RocketMQJava、C++、Goプルモデル、TCP、JMS、OpenMessagingをサポートメッセージの厳密な順序を保証し、スケールアウトもスムーズに行えますサポート同期モードでサポートし、メッセージの損失を防ぎますサポートサポート。SQL92に基づいたプロパティフィルタ式サポート高性能で低遅延のファイルストレージタイムスタンプとオフセットの2つの指標でサポートサポートなしマスタースレーブモデルでサポート。追加のキットは不要ですサポートすぐに動作します。ユーザーはわずかな設定に注意するだけで済みますサポート。豊富なWebとターミナルコマンドでコアメトリクスを公開します