高並列アーキテクチャシリーズ: Kafka、RocketMQ、RabbitMQ の長所と短所の比較

高並列アーキテクチャシリーズ: Kafka、RocketMQ、RabbitMQ の長所と短所の比較

Alibaba の Double 11 フラッシュセールなどの高同時実行ビジネス シナリオでは、メッセージ キュー ミドルウェアがトラフィックのピーク削減と分離において重要な役割を果たします。

今日は以下の内容について議論します:

完全なメッセージ キューとは何ですか? Kafka、RocketMQ、RabbitMQ の長所と短所、およびメッセージ キューの選択の比較。

最も完全な MQ メッセージ キューは何ですか?

では、業界でよく知られているメッセージ エンジンは何でしょうか?次の図に示すように:

これには、現在よく知られているメッセージ エンジンがほぼすべてリストされています。これには以下が含まれます。

ゼロMQ

Twitterの分散ログ

ActiveMQ: Apache の古いメッセージング エンジン

RabbitMQ、Kafka: AMQP のデフォルト実装。

ロケットMQ

Artemis: Apache ActiveMQ のサブプロジェクト

Apollo: Apache ActiveMQのサブプロジェクトで、次世代のメッセージングエンジンとして知られています。

商用メッセージングエンジン IronMQ

そして、JMS (Java Message Service) 標準を実装する OpenMQ です。

MQメッセージキューの技術的応用

1. デカップリング

分離は、メッセージ キューが解決する必要がある最も重要な問題です。

2. 最終的な一貫性

結果的一貫性とは、2 つのシステムの状態が一貫性を保ち、両方が成功するか、両方が失敗するかのいずれかであることを意味します。

最終的な一貫性はメッセージ キューの必須の機能ではありませんが、最終的な一貫性を必要とする処理を実行するためにメッセージ キューを利用することができます。

3. 放送

メッセージ キューの基本的な機能の 1 つはブロードキャストです。

メッセージ キューでは、メッセージがキューに配信されたかどうかだけを気にすればよいのです。誰がサブスクライブしたいかは下流の問題であり、開発と共同デバッグの作業負荷が大幅に軽減されることは間違いありません。

4. ピークシフトとフロー制御

典型的な使用シナリオとしては、フラッシュセール事業をトラフィックピーク削減のために利用することが挙げられます。

この記事は長いため、メッセージ キューの比較に焦点を当てます。詳細なアプリケーション シナリオについては、「トラフィック ピーク シェービングとは何ですか?」を参照してください。フラッシュセールビジネスのピークシェービングシナリオを解決する方法。

Kafka、RocketMQ、RabbitMQ の比較

1. アクティブMQ

アドバンテージ:

単一マシンスループット: 10,000

トピック量がスループットに与える影響:

適時性: ms レベル

可用性: 高、高可用性を実現するマスタースレーブアーキテクチャに基づく

メッセージの信頼性: データ損失の可能性が低い

機能サポート:MQ分野の機能は非常に充実しています

欠点:

現在、公式コミュニティによる ActiveMQ 5.x のメンテナンスはますます少なくなっており、大規模なスループットのシナリオで使用されることはほとんどありません。

2. カフカ

ビッグデータのキラーアプリとして知られる Kafka は、ビッグデータ分野でのメッセージ伝送には欠かせません。ビッグデータ用に作成されたこのメッセージ ミドルウェアは、数百万 TPS のスループットで有名であり、データの収集、転送、保存のプロセスで重要な役割を果たし、急速にビッグデータ分野の寵児となっています。

Apache Kafka はもともと LinkedIn によって独自の設計に基づく分散コミット ログ システムとして実装され、後に Apache プロジェクトの一部になりました。

LinkedIn、Uber、Twitter、Netflixなどの大手企業でも採用されています。

アドバンテージ:

パフォーマンスは良好で、単一マシンの書き込み TPS は 1 秒あたり約 100 万レコードです。利点はスループットが高いことです。

適時性: ms レベル

可用性: 非常に高い。 Kafka は分散されており、1 つのデータの複数のコピーが存在します。数台のマシンがダウンしても、データは失われず、使用不能にはなりません。

コンシューマーは Pull メソッドを使用してメッセージを取得します。メッセージは順番通りです。制御により、すべてのメッセージが消費され、1 回だけ消費されることを保証できます。

優れたサードパーティの Kafka Web 管理インターフェイス Kafka-Manager があります。

これはロギング分野では比較的成熟しており、多くの企業やオープンソース プロジェクトで使用されています。

機能サポート: 機能は比較的シンプルで、主に単純な MQ 機能をサポートしており、ビッグデータ分野でのリアルタイム コンピューティングやログ収集に広く使用されています。

欠点:

単一の Kafka マシンに 64 を超えるキュー/パーティションがある場合、負荷が大幅に増加します。キューの数が増えるほど負荷が高くなり、メッセージ送信の応答時間が長くなります。

ショートポーリングを使用する場合、リアルタイムのパフォーマンスはポーリング間隔によって異なります。

消費失敗は再試行をサポートしません。

メッセージの順序をサポートしますが、プロキシがダウンすると、メッセージの順序が乱れます。

コミュニティはゆっくりと更新されます。

3. ラビットMQ

RabbitMQ は 2007 年にリリースされました。AMQP (Advanced Message Queuing Protocol) に基づく再利用可能なエンタープライズ メッセージング システムであり、最も主流のメッセージング ミドルウェアの 1 つです。

RabbitMQの利点:

Erlang 言語の特性により、MQ は優れたパフォーマンスと高い並行性を備えています。

スループットは10,000レベルに達し、MQ機能は比較的完成している

堅牢で安定しており、使いやすく、クロスプラットフォームで、複数の言語をサポートし、完全なドキュメントを備えています。

オープンソースで提供される管理インターフェースは素晴らしく、使いやすい

コミュニティは非常に活発です。

RabbitMQ の欠点:

Erlang 開発はソースコードを理解するのが難しく、その基本機能はオープンソース コミュニティに依存して迅速に保守およびバグ修正を行うため、二次開発や保守には適していません。

RabbitMQ は実装メカニズムが重いため、スループットが低くなります。

比較的複雑なインターフェースとプロトコルを学習する必要があり、学習コストと保守コストが高くなります。

4. ロケットMQ

RocketMQ は、Java で実装された Alibaba のオープンソース製品です。これは Kafka を参考に設計され、独自の改良が加えられています。

RocketMQ は、注文、取引、再チャージ、ストリーム コンピューティング、メッセージ プッシュ、ログ ストリーミング処理、binglog 配信などのシナリオで Alibaba グループで広く使用されています。

RocketMQ の利点:

単一マシンスループット: 100,000

可用性: 非常に高い分散アーキテクチャ

メッセージの信頼性: パラメータの最適化と構成後、メッセージの損失がゼロになることが保証されます。

機能サポート: MQ は機能が比較的充実しており、分散化されており、スケーラビリティに優れています。

10億レベルのメッセージ蓄積をサポートし、蓄積によるパフォーマンスの低下は発生しません。

ソースコードはJavaなので、自分でソースコードを読み、自社のMQをカスタマイズして制御することができます。

RocketMQ の欠点:

サポートされているクライアント言語は多くなく、現在は Java と C++ ですが、C++ はまだ成熟していません。

平均的なコミュニティ活動

JMS インターフェースは MQ コアに実装されていないため、一部のシステムでは移行するために大量のコードを変更する必要があります。

メッセージキューの選択に関する推奨事項

1. カフカ

Kafka の主な特徴は、メッセージの消費を Pull モデルに基づいて処理し、高いスループットを追求することです。本来の目的はログ収集・送信であり、大量のデータを生成するインターネットサービスのデータ収集業務に適しています。

大企業でのご利用におすすめです。ログ収集機能があれば、間違いなく Kafka を選ぶべきです。

2. ロケットMQ

金融インターネット分野向けに誕生し、特に電子商取引における注文減額やビジネスのピークカットなど、高い信頼性が求められるシナリオに適しています。大量のトランザクションが流入すると、バックエンドが時間内に処理できない可能性があります。

安定性の点では、RoketMQ の方が信頼できるかもしれません。これらのビジネス シナリオは、Alibaba の Double 11 期間中に何度もテストされています。ビジネスで上記のような同時シナリオが発生する場合は、RocketMQ を選択することをお勧めします。

3. ラビットMQ

RabbitMQ: Erlang 言語自体の並行性の利点を組み合わせることで、パフォーマンスが向上し、コミュニティがより活発になりますが、二次開発やメンテナンスには適していません。ただし、RabbitMQ コミュニティは非常に活発であり、開発プロセス中に発生したバグを解決することができます。

データ量がそれほど大きくない場合、中小企業はより充実した機能を備えた RabbitMQ を優先する必要があります。

<<:  分散システム Kafka と ES では、JVM メモリを増やす方が良いでしょうか?

>>:  中国高速航空、クラウドインフラ構築にAWSを全面採用

推薦する

ロゴ デザインにおける最も一般的な 4 つの落とし穴。LOGO Design Network がオンラインで完璧なロゴをデザインします。

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています小さなロゴ...

国家規模の検索プラットフォーム「China Search」が正式に開始され、中国語のドメイン名が使用されるようになった。

国家規模の検索プラットフォーム「China Search」が正式に開始され、中国語のドメイン名が使用...

プロフェッショナルなソーシャルネットワーキングサイトは、頻繁に資金提供を受け、多様な価値観で注目を集めています

現在、中国では、プロフェッショナル ソーシャル ネットワーキング サイトが資金調達を受けているという...

OpenHarmony 分散ソフトバスプロセス分析 v1.0丨2。ソフトバスを開いて接続を確立する

[[408696]]詳細については、以下をご覧ください。 51CTOとHuaweiが共同で構築したH...

業界ウェブサイト開発の限界の観点から、新しい業界サイトの発展の道筋を議論する

数年前に業界のウェブサイトを運営し、今日まで続けていれば、ある程度の成功を収めていたでしょう。現在、...

モバイルゲームユーザーがゲームを入手する6つの方法をすべてご存知ですか?

ユーザーがゲームを入手するには、一般的に、推奨ダウンロードと検索ダウンロードの 2 つの方法がありま...

SEO の詳細が成功と失敗を決定します。実行しましたか?

著者は長年にわたり SEO 最適化に取り組んでおり、毎日インターネットを利用しています。ウェブサイト...

Ramnode - 128M メモリ/5GSSD/1 コア VPS の簡単なレビュー

もともと edgevm を購入しようと思っていたのですが、仕方がないので ramnode (シアトル...

時折ホットワードが200のIPを呼び込み、企業ウェブサイトの直帰率に大きな打撃を与えた

人気の単語を検索することでもたらされるトラフィックがかなり大きいことは、誰もが知っていると思います。...

ウェブサイトの宣伝は誇張ではなく、実用的なものにすべきであり、1100を獲得することができます

ウェブサイトのプロモーションは、特に新しく構築したウェブサイトの場合、すべてのウェブマスターにとって...

業界のデジタル化とインテリジェント化を推進する中国聯通のビッグデータ技術の優位性が強調される

[51CTO.comからのオリジナル記事] インターネット+、人工知能、クラウドコンピューティングな...

サーバーレス環境でマイクロサービスを設計するにはどうすればよいでしょうか?

著者 |ラジャ・サラヴァナンイーサン・サーバーレスが編集これは、デジタル化と近代化のアップグレードの...

1qcloud-$5.98/onAPPクラウド/2gメモリ/60gハードディスク/無制限トラフィック/ソルトレイクシティ

控えめなクラウドホスト業者である 1qcloud は、基盤となる XEN、onAPP クラウド アー...

Google が Salesforce を 2,500 億ドルで買収すると報道されました。アマゾンとマイクロソフトに対抗するためクラウド事業を分割

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

Apple の公式発表: ゲーム アプリの提出には、国家ラジオ映画テレビ総局の承認番号と日付を含める必要があります。

Apple iTunes Connect バックエンドがニュース発表をリリースしました: 中国のゲー...