MQの選び方

1. 要件分析

1. 機能要件: 最も基本的な生成および消費モデルに加えて、MQ は同期呼び出しのサポートを提供するために REQUEST-REPLY モデルもサポートする必要があります。さらに、MQ が PUBLISH-SUBSCRIBE モデルを提供できる場合、イベントプロキシはもっとシンプルにできる

2. パフォーマンス要件: 今後 1 ~ 2 年の製品開発を考慮すると、メッセージ キューのスループットは 1W qps を超えることは予想されませんが、単一メッセージの遅延要件が高いため、1W qps を超えることが期待されます。できるだけ短く

3. 可用性の要件: オンライン サービスであるため、高可用性が必要ですが、少量のメッセージ損失は許容されます。

4. 使いやすさの要件: 学習コスト、初期開発および展開コスト、日々の運用および保守コストなどを含みます。

2. 水平比較

特性 アクティブMQ ラビットMQ カフカ ロケットMQ
生産者と消費者 サポート サポート サポート サポート
発行-購読 サポート サポート サポート サポート
要求と応答 サポート サポート - サポート
APIの完全性 高い 高い 高い 低 (静的構成)
多言語サポート サポートされていますが、JAVA が推奨されます 言語に依存しない サポートされていますが、JAVA が推奨されます サポート
単一マシンのスループット レベル10,000 レベル10,000 10万レベル 単一マシンレベル 10,000
メッセージの遅延 ミリ秒レベル マイクロ秒レベル ミリ秒レベル ミリ秒レベル
可用性 高(マスタースレーブ) 高(マスタースレーブ) 非常に高い (分散型) 非常に高い (分散型)
メッセージが失われました - 低い 理論的には失われることはない 理論的には失われることはない
重複したメッセージ - 制御可能な 理論的には重複が発生します 重複を許可する
文書の完全性 高い 高い 高い 真ん中
クイックスタートを提供する 持っている 持っている 持っている なし
最初の導入の難しさ - 低い 真ん中 高い

個人的な提案:

  • あなたのスキルが平均的であれば、RabbitMQ の使用を検討できます。
  • インフラストラクチャの研究開発力は強力なので、RocketMQ を使用するのは良い選択です。
  • リアルタイム コンピューティングとログ収集: Kafka の使用

3.選び方

MQ 説明する
ラビットMQ Erlang 開発では、メッセージの蓄積に対するサポートが十分ではありません。大量のメッセージが蓄積されると、RabbitMQ のパフォーマンスは急激に低下します。RabbitMQ は、1 秒あたり数万から数十万のメッセージを処理できます。
ロケットMQ Java で開発されており、インターネット用のクラスタリング機能が豊富です。オンライン サービスの応答遅延に対して多くの最適化が行われています。ほとんどの場合、ミリ秒レベルの応答を実現し、1 秒あたり数十万のメッセージを処理できます。 。
カフカ Scala は豊富なログ機能と最高のパフォーマンスを備えて開発されていますが、1 秒あたりのメッセージ数がそれほど多くないビジネス シナリオでは、Kafka のレイテンシが比較的高くなるため、オンライン ビジネス シナリオには適していません。
アクティブMQ Java 開発はシンプルで安定していますが、パフォーマンスは前の 3 つに比べて劣ります。小規模なシステムには問題ありませんが、お勧めできません。インターネットで主流のものを使用することをお勧めします。

おすすめ

転載: blog.csdn.net/weixin_44702984/article/details/131616209