ApsaraMQ for RabbitMQ は、AMQP 0-9-1 プロトコルを実装し、高可用性 (HA) 分散ストレージアーキテクチャに基づいたメッセージングプロダクトです。オープンソースの RabbitMQ クライアントと互換性があります。オープンソースの RabbitMQ と比較して、ApsaraMQ for RabbitMQ は、メッセージの蓄積やスプリットブレイン問題など、一般的な安定性の問題点を解決します。また、高い同時実行性、分散デプロイメント、柔軟なスケーリングなど、クラウドメッセージングサービスの利点も提供します。このトピックでは、ApsaraMQ for RabbitMQ とオープンソースの RabbitMQ を機能、安定性、パフォーマンス、Exchange、キューの観点から比較し、ApsaraMQ for RabbitMQ の機能をより深く理解できるよう支援します。
ApsaraMQ for RabbitMQ の詳細については、「利点」をご参照ください。
機能
項目 | ApsaraMQ for RabbitMQ | オープンソース RabbitMQ |
プロトコル | AMQP 0-9-1 | AMQP 0-9-1、AMQP 1.0、STOMP、MQTT、HTTP(S)、および WebSocket。 |
クライアント SDK サポート | すべての言語とバージョンのオープンソース SDK をサポートします。 | オープンソース SDK。 |
スケジュールメッセージ | 秒レベルの精度を提供します。x-delayed-message プラグインと存続時間 (TTL) メソッドの両方と互換性があります。詳細については、「遅延メッセージ」をご参照ください。 | プラグインまたはメッセージ TTL の有効期限切れと転送方式を使用して実装されます。 |
トランザクションメッセージ | サポートされていません。 | サポートされています。 |
順序付きメッセージ | サポートされています。詳細については、「メッセージの順序付き消費」をご参照ください。 | サポートされています。 |
メッセージの優先順位 | 専用型インスタンスでのみサポートされています。 | サポートされています。 |
メッセージリトライメカニズム | 指定された期間内に確認応答されない場合、メッセージは再配信されます。タイムアウト期間とリトライ回数の詳細については、「リトライポリシー」をご参照ください。 | メッセージリトライメカニズムは提供されていません。問題のあるメッセージは消費中にスキップできないため、新しいメッセージの処理が妨げられます。これにより、メッセージの蓄積、メモリの問題、およびサービスの中断につながる可能性があります。 |
ユーザー名とパスワード |
| カスタムのユーザー名とパスワード。 |
権限 |
| オープンソースの権限管理。 |
可観測性: ダッシュボード |
詳細については、「ダッシュボード」をご参照ください。 | 次の 2 つのソリューションをサポートします:
|
可観測性: メッセージトレース |
詳細については、「メッセージトレース」をご参照ください。 | メッセージトレース情報は、サーバー上のテキストベースのログファイルに保存されます。これにより、クエリと問題の特定が非効率になります。 |
サービスとパフォーマンス
項目 | ApsaraMQ for RabbitMQ | オープンソース RabbitMQ |
最大クラスター TPS (transactions per second) | 上限はありません。ApsaraMQ for RabbitMQ は、マスターレスの分散クラスターデプロイメントを使用します。クラスターは水平にスケールアウトまたはスケールインできます。 | 上限があります。スケールアウトはデバイス仕様のスペックアップに依存し、制限があります。 |
単一キューの最大 TPS | 上限はありません。ApsaraMQ for RabbitMQ は、単一キューの水平スケーリングをサポートします。同時実行性に関連するパフォーマンスや容量の制限はありません。 | 上限があります。単一キューのパフォーマンスは、単一ノードのパフォーマンスによって制限されます。 |
接続 | 上限はありません。ApsaraMQ for RabbitMQ インスタンスが処理できる接続数は、クラスターがスケールアウトするにつれて増加します。パフォーマンスは接続数の増加による影響を受けません。 | 上限があります。単一マシンの接続数はそのパフォーマンスによって制限され、スケールアウトできません。 |
スケジュールメッセージ | 秒レベルの精度、高性能、すぐに使用可能。 | 使用が複雑です。 |
サービスの可用性とデータの信頼性 |
| ミラーキューまたはクォーラムキューを使用して実装されます。この実装はスプリットブレイン問題が発生しやすいです。 |
メッセージ蓄積容量 | 大量のメッセージが蓄積されても高いパフォーマンスを維持します。クラスターの通常運用には影響しません。 | 大量のメッセージが蓄積されると、メモリの問題が容易に発生し、サービスの中断につながる可能性があります。 |
弾力性 |
| 単一マシンの容量が、クラスターの同時実行容量の上限です。スケールアウトするには、マシンの仕様をスペックアップするか、クラスターを分割する必要があります。 |
検査システム | デッドロックや故障などの問題を自動的に検出して修正します。 | なし。 |
Exchange とキュー
表 1. Exchange
項目 | ApsaraMQ for RabbitMQ | オープンソース RabbitMQ |
Exchange タイプ | direct、fanout、headers、topic、x-delayed-message、および x-consistent-hash タイプをサポートします。 | direct、fanout、headers、topic、x-delayed-message、および x-consistent-hash タイプをサポートします。 |
永続性 | 永続的および非永続的な構成の両方をサポートします。 | 永続的および非永続的な構成の両方をサポートします。 |
自動削除 | サポートされています。 | サポートされています。 |
内部 | サポートされています。 | サポートされています。 |
代替 exchange | サポートされています。 | サポートされています。 |
一貫性ハッシュ exchange | サポートされています。 | サポートされています。 |
表 2. キュー
項目 | ApsaraMQ for RabbitMQ | オープンソース RabbitMQ |
キュータイプ | 構成は不要です。分散 HA クラスターです。 | 構成が必要です。
|
ノード | 構成は不要です。このサービスは運用保守 (O&M) が不要です。 | 構成が必要です。ノードを選択できます。 |
再試行ポリシー | 消費タイムアウトが発生した場合、メッセージは再配信されます。リトライポリシーの詳細については、「リトライポリシー」をご参照ください。 | タイムアウト再配信ポリシーはありません。 |
永続性 | 永続的および非永続的な構成の両方をサポートします。 | 永続的および非永続的な構成の両方をサポートします。 |
最大長 | 構成は不要です。大量のメッセージ蓄積をサポートします。 | 過剰なメッセージ蓄積によるメモリの問題や故障を防ぐために構成が必要です。 |
最大長バイト数 | ||
メモリ内最大長 | ||
メモリ内最大バイト数 | ||
配信制限 | 構成は不要です。これはデフォルト値が 16 の静的フィールドです。メッセージリトライメカニズムの詳細については、「リトライポリシー」をご参照ください。 | 構成が必要です。 |
配信不能 exchange | サポートされています。 | サポートされています。 |
配信不能ルーティングキー | サポートされています。 | サポートされています。 |
単一アクティブコンシューマー | サポートされています。 詳細については、「メッセージの順序付き消費」をご参照ください。 | サポートされています。 |