ホームページ >よくある問題 >RabbitMQ と Kafka の違い

RabbitMQ と Kafka の違い

(*-*)浩
(*-*)浩オリジナル
2020-01-09 11:41:098723ブラウズ

RabbitMQ と Kafka の違い

# アプリケーション シナリオの観点から (推奨学習: PHPSTORM )

Rabbitmq では、AMQP プロトコルに従います。内部の高い同時実行性 erlanng 言語は、比較的高い信頼性を必要とするリアルタイム メッセージングで開発および使用されています。

kafka は、2010 年 12 月に Linkedin が開発したオープンソースのメッセージ発行およびサブスクリプション システムです。主に、アクティブなストリーミング データや大量のデータ処理を処理するために使用されます。

1) アーキテクチャ モデルの観点

RabbitMQ は AMQP プロトコルに従います。RabbitMQ のブローカーは、Exchange、Binding、および queue で構成され、Exchange と Binding がルーティング キーを構成します。 ;

クライアントのプロデューサはチャネルに接続してサーバーと通信し、コンシューマはキューからメッセージを取得して消費します (接続が長く、キューにメッセージがある場合はプッシュされます)コンシューマ側に送信され、コンシューマ ループは入力ストリームからデータを読み取ります)。 RabbitMQ はブローカー中心であり、メッセージ確認メカニズムを備えています。

Kafka は、コンシューマを中心として、プロデューサ、ブローカ、コンシューマという一般的な MQ 構造に従います。メッセージの消費情報は、クライアントのコンシューマに保存されます。コンシューマは、次に従って、ブローカからバッチでデータを取得します。消費ポイント、メッセージなし 確認メカニズム。

2) スループットの点

kafka はスループットが高く、内部的にはメッセージ バッチ処理、ゼロコピー メカニズムを使用し、データの保存と取得はローカル ディスクです。シーケンシャル バッチです。操作の複雑さは O(1) で、メッセージ処理は非常に効率的です。

rabbitMQ は、スループットの点で kafka よりわずかに劣ります。出発点が異なります。rabbitMQ は、メッセージの信頼性の高い配信をサポートし、トランザクションをサポートしますが、バッチ操作はサポートしません。ストレージの信頼性要件に基づいて、ストレージを使用できます。メモリまたはハードドライブ。

3) 可用性の点で、

rabbitMQ はミラー キューをサポートしており、メイン キューに障害が発生すると、ミラー キューが引き継ぎます。

Kafka のブローカーは、アクティブ モードとバックアップ モードをサポートします。

4) クラスターの負荷分散に関しては、

kafka は、Zookeeper を使用してクラスター内のブローカーとコンシューマーを管理し、Zookeeper にトピックを登録できます。

Zookeeper の調整メカニズムを通じて、プロデューサーはトピックに対応するブローカー情報を保存し、ランダムまたはポーリングでブローカーに送信できます;

そして、プロデューサーはセマンティクスに基づいてシャードを指定できます。そしてメッセージはブローカーの特定のシャードに送信されます。

RabbitMQ のロード バランシングには、サポート用に別のロードバランサーが必要です。

以上がRabbitMQ と Kafka の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。