ユースケースとリアルタイムの例を備えた Kafka
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 トピックを既存のアプリケーションまたはデータ システムに接続する再利用可能なプロデューサーまたはコンシューマーを構築および実行できます。たとえば、リレーショナル データベースへのコネクタは、テーブルへのすべての変更をキャプチャする場合があります。
実際の例
- LinkedIn: LinkedIn は Kafka を使用して、リアルタイムのユーザー アクティビティ データを処理およびストリーミングします。このプラットフォームは 1 日あたり 2 兆件を超えるメッセージを生成します。Kafka は、リアルタイムの処理と分析を可能にすることで、この膨大な量のデータを管理するのに役立ちます。
- Uber: Uber は Kafka を使用してリアルタイムのデータ ストリームを管理しています。Kafka は、リアルタイムの位置データ、乗車データ、支払いデータなど、Uber が会社のドライバーと乗客のアプリケーションによって生成されたデータの流れを管理するのに役立ちます。
- Netflix: Netflix は、Kafka を使用してデータ パイプラインを管理し、マイクロサービス間でデータをストリーミングします。Kafka は、Netflix が異なるサービス間のデータ フローを管理するのに役立ち、各サービスがユーザーにシームレスなストリーミング エクスペリエンスを提供するために必要なデータにアクセスできるようにします。
- Airbnb: Airbnb は Kafka を使用してイベント駆動型アーキテクチャを強化しています。Kafka は、Airbnb がユーザーとサービスによって生成されたイベントの流れを管理するのに役立ち、パーソナライズされたレコメンデーションとシームレスなユーザー エクスペリエンスを提供できるようにします。
- Twitter: Twitter は Kafka を使用して、リアルタイムのソーシャル メディア データを管理しています。Kafka は、Twitter がユーザーによって生成された大量のデータを管理するのに役立ち、広告主やパートナーにリアルタイムの洞察と分析を提供できるようにします。
Spring Boot を使用した Spring Security ロールベースのアクセス
JWT を使用した Spring Security 認証と承認
春の AOP チュートリアル
javinpaul Domenico Nicoli Trey Huffine Mehmet Arsl Mehmet Ozkaya 教育チーム