# アプリケーション シナリオの観点から (推奨学習: 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 サイトの他の関連記事を参照してください。