ユースケースとリアルタイムの例を備えた Kafka

May 09 2023
Apache Kafka は、大量のデータをリアルタイムで処理するように設計されたオープンソースの分散ストリーミング プラットフォームであり、リアルタイム データ パイプライン、ストリーミング アプリケーション、およびイベント駆動型アーキテクチャを構築するための理想的なプラットフォームです。ユース ケース: リアルタイム データ パイプライン Kafka の最も一般的なユース ケースの 1 つは、リアルタイム データ パイプラインの構築です。

Apache Kafka は、大量のデータをリアルタイムで処理するように設計されたオープンソースの分散ストリーミング プラットフォームであり、リアルタイム データ パイプライン、ストリーミング アプリケーション、およびイベント駆動型アーキテクチャを構築するための理想的なプラットフォームです。

使用例:

リアルタイム データ パイプライン

Kafkaの最も一般的なユース ケースの 1 つは、リアルタイム データ パイプラインの構築です。たとえば、Kafka を使用して、センサー、ログ ファイル、ソーシャル メディア プラットフォーム、およびその他のソースからデータを収集し、データ ウェアハウス、機械学習プラットフォーム、およびその他の宛先にストリーミングできます。

メッセージング システム

Kafka はメッセージング システムとしても使用できるため、アプリケーションとサービスの間で高速かつ効率的にメッセージを配信できます。たとえば、Kafka を使用して、チャット アプリケーション、電子メール システム、およびその他のリアルタイム通信システムを強化できます。

ストリーム処理

Apache Flink やApache Spark Streamingなどのストリーム処理フレームワークに対する Kafka のサポートにより、リアルタイムのデータ処理と分析が可能になります。たとえば、Kafka を使用して、リアルタイムの不正検出システム、リアルタイムのレコメンデーション エンジン、リアルタイムのセンチメント分析システムを構築できます。

イベント駆動型アーキテクチャ

イベント駆動型アーキテクチャに対する Kafka のサポートは、複雑なイベント駆動型アプリケーションを構築するための理想的な選択肢となります。Kafka を使用すると、イベントをリアルタイムで生成、消費、および処理できます。たとえば、Kafka を使用して、イベント駆動型のマイクロサービス アーキテクチャ、IoT プラットフォーム、およびその他のイベント駆動型システムを構築できます。

ログ集計

Kafka はログの集約にも使用できるため、複数のソースからのログの収集、保存、および分析が可能になります。たとえば、Kafka を使用して、Web サーバー、データベース、およびその他のシステムからログを収集および分析できます。

Kafka の主要コンポーネント

カフカのトピック:

  • トピックは、メッセージがプロデューサーによってパブリッシュされ、メッセージがコンシューマーによって消費されるデータ ストリームの論理名です。
  • Kafka トピックは 1 つ以上のパーティションに分割され、Kafka クラスター全体に格納されます。

ブローカーは、1 つ以上の Kafka パーティションを格納および管理する Kafka サーバーの単一インスタンスです。Kafka クラスターは、Kafka トピックのストレージと処理を管理するために連携する 1 つ以上のブローカーで構成されます。

生産者と消費者:

プロデューサーは、kafka トピックにデータを生成します。プロデューサーはデータをトピックに並行して書き込むことができ、Kafka はデータがパーティション間で均等に分散されるようにします。
コンシューマーは、1 つ以上の Kafka トピックからデータを消費します。コンシューマーはトピックをサブスクライブし、パーティションからデータを読み取ります。Kafka は、グループ内の 1 つのコンシューマーのみが、任意の時点でパーティションからデータを受信することを保証します。

パーティション:

  • Kafka トピックは、変更不可能なシーケンス (不変) でメッセージを含むいくつかのパーティションに分割されます。
  • パーティション内の各メッセージは、一意のオフセットによって割り当てられ、識別されます。
  • トピックには複数のパーティション ログを含めることもできます。これにより、複数のコンシューマーがトピックから並行して読み取ることができます。

パーティション内のメッセージにはそれぞれ、オフセットと呼ばれる一意の (パーティションごとに) 連続した ID が割り当てられます。

消費者グループ:

コンシューマー グループは、Kafka トピックからのデータを使用するために連携する 1 つ以上のコンシューマーのセットです。

複製:

レプリケーションは、データの複数のコピーを作成するプロセスです。レプリケーションにより、ブローカー (ノード) に障害が発生したり使用できなくなったりした場合に、そのブローカーに保存されているデータを、同じデータのコピーを持つ他のブローカーから復元できます。

カフカ API

Kafka には 4 つのコア API があります。

Producer API を使用すると、アプリケーションはレコードのストリームを 1 つ以上の Kafka トピックに発行できます。

コンシューマー APIを使用すると、アプリケーションは 1 つ以上のトピックにサブスクライブし、レコードのストリームを処理できます。

Streams APIを使用すると、アプリケーションはストリーム プロセッサとして機能し、1 つ以上のトピックからの入力ストリームを消費し、1 つ以上の出力トピックへの出力ストリームを生成して、入力ストリームを出力ストリームに効果的に変換できます。

コネクタ API を使用すると、Kafka トピックを既存のアプリケーションまたはデータ システムに接続する再利用可能なプロデューサーまたはコンシューマーを構築および実行できます。たとえば、リレーショナル データベースへのコネクタは、テーブルへのすべての変更をキャプチャする場合があります。

実際の例

  1. LinkedIn: LinkedIn は Kafka を使用して、リアルタイムのユーザー アクティビティ データを処理およびストリーミングします。このプラットフォームは 1 日あたり 2 兆件を超えるメッセージを生成します。Kafka は、リアルタイムの処理と分析を可能にすることで、この膨大な量のデータを管理するのに役立ちます。
  2. Uber: Uber は Kafka を使用してリアルタイムのデータ ストリームを管理しています。Kafka は、リアルタイムの位置データ、乗車データ、支払いデータなど、Uber が会社のドライバーと乗客のアプリケーションによって生成されたデータの流れを管理するのに役立ちます。
  3. Netflix: Netflix は、Kafka を使用してデータ パイプラインを管理し、マイクロサービス間でデータをストリーミングします。Kafka は、Netflix が異なるサービス間のデータ フローを管理するのに役立ち、各サービスがユーザーにシームレスなストリーミング エクスペリエンスを提供するために必要なデータにアクセスできるようにします。
  4. Airbnb: Airbnb は Kafka を使用してイベント駆動型アーキテクチャを強化しています。Kafka は、Airbnb がユーザーとサービスによって生成されたイベントの流れを管理するのに役立ち、パーソナライズされたレコメンデーションとシームレスなユーザー エクスペリエンスを提供できるようにします。
  5. Twitter: Twitter は Kafka を使用して、リアルタイムのソーシャル メディア データを管理しています。Kafka は、Twitter がユーザーによって生成された大量のデータを管理するのに役立ち、広告主やパートナーにリアルタイムの洞察と分析を提供できるようにします。

Spring Boot を使用した Spring Security ロールベースのアクセス

JWT を使用した Spring Security 認証と承認

春の AOP チュートリアル

Spring Boot ロギングのチュートリアル

Spring Boot での一元化された構成

Spring Boot でのカスタム検証

javinpaul Domenico Nicoli Trey Huffine Mehmet Arsl Mehmet Ozkaya 教育チーム