Apache-kafka-introduction

提供:Dev Guides
移動先:案内検索

Apache Kafka-はじめに

ビッグデータでは、膨大な量のデータが使用されます。 データに関しては、主に2つの課題があります。最初の課題は、大量のデータを収集する方法であり、2番目の課題は、収集したデータを分析することです。 これらの課題を克服するには、メッセージングシステムが必要です。

Kafkaは、分散型の高スループットシステム向けに設計されています。 Kafkaは、従来のメッセージブローカーの代わりとして非常にうまく機能する傾向があります。 他のメッセージングシステムと比較して、Kafkaはスループットが向上し、パーティション分割、複製、および固有のフォールトトレランスが組み込まれているため、大規模なメッセージ処理アプリケーションに最適です。

メッセージングシステムとは

メッセージングシステムは、あるアプリケーションから別のアプリケーションにデータを転送するため、アプリケーションはデータに集中できますが、データの共有方法については心配しません。 分散メッセージングは​​、信頼できるメッセージキューイングの概念に基づいています。 メッセージは、クライアントアプリケーションとメッセージングシステムの間で非同期的にキューに入れられます。 2種類のメッセージングパターンを使用できます。1つはポイントツーポイント、もう1つはパブリッシュ/サブスクライブ(pub-sub)メッセージングシステムです。 ほとんどのメッセージングパターンは pub-sub に従います。

ポイントツーポイントメッセージングシステム

ポイントツーポイントシステムでは、メッセージはキューに保持されます。 1つ以上のコンシューマーがキュー内のメッセージを消費できますが、特定のメッセージは最大1つのコンシューマーのみが消費できます。 コンシューマは、キュー内のメッセージを読み取ると、そのキューから消えます。 このシステムの典型的な例は、各注文が1つの注文処理者によって処理される注文処理システムですが、複数の注文処理者が同時に機能することもできます。 次の図は、構造を示しています。

ポイントツーポイントメッセージングシステム

パブリッシュ/サブスクライブメッセージングシステム

パブリッシュ/サブスクライブシステムでは、メッセージはトピックに保持されます。 ポイントツーポイントシステムとは異なり、消費者は1つ以上のトピックをサブスクライブし、そのトピックのすべてのメッセージを消費できます。 パブリッシュ/サブスクライブシステムでは、メッセージプロデューサーはパブリッシャーと呼ばれ、メッセージコンシューマーはサブスクライバーと呼ばれます。 実際の例としては、Dish TVがあります。これは、スポーツ、映画、音楽などのさまざまなチャンネルを公開し、誰でも自分のチャンネルセットに登録して、登録済みのチャンネルが利用可能になるといつでも入手できます。

Publish-Subscribe Messaging system

カフカとは何ですか?

Apache Kafkaは、分散パブリッシュ/サブスクライブメッセージングシステムであり、大量のデータを処理でき、あるエンドポイントから別のエンドポイントにメッセージを渡すことができる堅牢なキューです。 Kafkaは、オフラインとオンラインの両方のメッセージ消費に適しています。 データの損失を防ぐため、Kafkaメッセージはディスクに保存され、クラスター内で複製されます。 Kafkaは、ZooKeeper同期サービスの上に構築されています。 リアルタイムストリーミングデータ分析のために、Apache StormおよびSparkと非常によく統合されます。

利点

以下はカフカのいくつかの利点です-

  • 信頼性-Kafkaは分散、パーティション分割、複製、およびフォールトトレランスです。
  • スケーラビリティ-Kafkaメッセージングシステムは、ダウンタイムなしで簡単にスケーリングできます。
  • 耐久性-Kafkaは「 Distributed commit log」を使用します。これは、メッセージが可能な限り高速にディスクに保持されるため、耐久性があることを意味します。
  • パフォーマンス-Kafkaは、メッセージの発行とサブスクライブの両方のスループットが高くなっています。 多くのTBのメッセージが保存されても、安定したパフォーマンスを維持します。

Kafkaは非常に高速で、ダウンタイムとデータ損失をゼロに保証します。

ユースケース

Kafkaは多くのユースケースで使用できます。 それらのいくつかは以下にリストされています-

  • メトリック-Kafkaは、運用監視データによく使用されます。 これには、分散アプリケーションから統計を集約して、運用データの集中フィードを生成することが含まれます。
  • ログ集約ソリューション-組織全体でKafkaを使用して、複数のサービスからログを収集し、それらを標準形式で複数の消費者が利用できるようにすることができます。
  • ストリーム処理-StormやSpark Streamingなどの人気のあるフレームワークは、トピックからデータを読み取り、処理し、処理されたデータを新しいトピックに書き込み、ユーザーとアプリケーションで利用できるようにします。 Kafkaの強力な耐久性は、ストリーム処理のコンテキストでも非常に役立ちます。

カフカの必要性

Kafkaは、すべてのリアルタイムデータフィードを処理するための統合プラットフォームです。 Kafkaは低遅延メッセージ配信をサポートし、マシン障害が発生した場合のフォールトトレランスを保証します。 多数の多様な消費者を処理する能力があります。 Kafkaは非常に高速で、毎秒200万回の書き込みを実行します。 Kafkaはすべてのデータをディスクに保持します。つまり、本質的にはすべての書き込みがOS(RAM)のページキャッシュに送られます。 これにより、ページキャッシュからネットワークソケットにデータを転送するのが非常に効率的になります。