前の私たちは、メッセージキュー、メッセージキューのなぜ使用の欠点を議論しました。今日は私たちがどのような利用へのメッセージキューの最後に探ります。だけでなく、最高の技術、最も適切な技術は、可用性を無視して、最高のパフォーマンスを追求するのではなく、常にことを覚えておいてください「時期尚早な最適化が原罪です。」
私は結論についてお話しましょう:
中小企業、技術力がより一般的で、技術的な課題が特に高くはない、RabbitMQの良い選択肢であり、大企業、インフラ、強力なR&D強度、とRocketMQは良い選択です
それがリアルタイムで計算した場合との大きなデータフィールド、収集ログや他のシーン、カフカは、業界標準であります
現在まで、業界が今人気のミドルウェアメッセージキューは、次のとおりです。
-
Redisの
-
ActiveMQの
-
RabbitMQの
-
RocketMQ
-
カフカ
(1)のRedis
私たちの心には、Redisのは、キーと値のキャッシュミドルウェアではなく、メッセージキューのミドルウェアです。しかし、実際にはMQ機能自体をサポートし、それを使用して軽量キューサービスとして使用することができます。チームと運用チームのRabbitMQとRedisのために、100万回を実施し、10万記録された実行時間に一度。試験データは、データ128バイト、512バイト、1K 10Kと4種類のサイズに分割されています。
実験は:パフォーマンスデータは、Redisの比較的小さいチームは、RabbitMQのよりも高く、かつデータサイズが10Kを超える場合、Redisのは耐えられない遅い缶があるとき、チームは関係なく、データサイズの、Redisのは非常に良好なパフォーマンスを示してきたとき、しかし、チームのパフォーマンスのRabbitMQはRedisのよりもはるかに低いです。
しかし、実用的なアプリケーションでは、我々は一般的には、メッセージングミドルウェアはRedisのを考慮すべき時ではないことを検討してください。2つの主な理由がありますが、一つはデータサイズが10Kはもう一つの問題は、Redisのキャッシュを行うの印象を作成することで遅い超えています。これら二つの理由上記に基づき、Redisのは、ビジネスの簡単なメッセージキューのシーン小型のアプリケーションに適しています。ビジネスの複雑、大規模な事業ならば、通常の状況下でのRedisは除外されます。
(2)ActiveMQの
ActiveMQのは、Apacheのサブプロジェクトです。同様ZeroMQは、それがピア・技術へのエージェントとピアとしてキューに入れることができます。RabbitMQのような同時に、少量のコードは、それが効率的に高度なアプリケーションシナリオを実装することができます。
(3)のRabbitMQ
RabbitMQのは、オープンソースのメッセージキュー自体は、多くのプロトコルをサポートして使用してErlangで書かれている。このためのAMQP、XMPP、SMTP、STOMPは、それは非常にヘビー級で、エンタープライズクラスの開発に適しています。メッセージがクライアントに送信中心に最初のキューにキューイングされていることを意味ブローカー・アーキテクチャを実現しながら。、ルーティング、ロードバランシングやデータの永続性は非常に良いサポートを持っています。
(4)カフカ
カフカは、高性能クロスランゲージは、メッセージキューシステムをパブリッシュ/サブスクライブ配信され、アパッチのサブプロジェクトです。、完全分散システム、ハイスループット、共通のサーバーのスループットレートのいずれか10W / sを達成することができ、迅速な永続性は、メッセージがO(1)で永続的であってもよいオーバーヘッド:これは、以下の特徴を有しますブローカー、プロデューサー、分散されているネイティブ、自動負荷分散のための消費者自動サポート、Hadoopのデータを並列にロードされたサポート、ログデータとHadoopのシステム、制限のオフライン解析用と同じですが、リアルタイム処理を必要とするが、これは実行可能なソリューションですプログラム。
(5)RocketMQ
RocketMQは、オープンソースプロジェクトのアリババである、それは、Apache財団に組み込まれています。それは、上のカフカに基づいて開発された原因はアリババの事業の発展として、彼らはRocketMQのこれだけ誕生、特定のビジネスシナリオの不完全なためカフカのサポートを発見しました。
与 Kafka 比起来,RocketMQ 很多方面都极其相似。唯一的不同是 RocketMQ 对于业务特性的支持更完善,所以更适用于业务场景。
从上面的表格我们可以看出几个简单的结论:
-
无论是在单机吞吐量还是可用性方面,ActiveMQ和RabbitMQ都差不多,而RocketMQ和Kafka差不多。
-
在功能特性方面,ActiveMQ、RabbitMQ、RocketMQ功能比较完善。Kafka功能性较弱。