Kafka とは
この非同期 API は、Apache Kafka プロトコルを使用して実装されます。 これは、フォールト・トレラントになるように設計されたパブリッシュ/サブスクライブ・イベント・プラットフォームであり、リアルタイム・データ・フィードを処理するために、スループットが高く、待ち時間の短いプラットフォームを提供します。
Kafka は、1 つ以上のサーバー (Kafka ブローカー) のクラスターとして稼働します。 負荷は、サーバー間で分散させることによって、クラスター全体でバランスが取られます。
主なコンセプト
トピック
一連のメッセージは、トピックと呼ばれるカテゴリーに保管されます。 トピックは、AsyncAPI 資料ではチャネルと表記されます。 各トピックは、1 つ以上のパーティションから成ります。 各パーティションは、メッセージの順序付きリストです。 パーティション上のメッセージにはそれぞれ、オフセットと呼ばれる単調に増加する数値が付与されます。
メッセージ/レコード
Kafka では、データの単位はヘッダーと値の 2 つの部分で構成されます。 ヘッダーは通常、メッセージに関するデータに使用され、値はメッセージの本文となります。
プロデューサー
一連のメッセージを Kafka トピックに公開するプロセスです。 プロデューサーは、1 つ以上のトピックに公開でき、オプションでデータを保管するパーティションを選択できます。
コンシューマー
Kafka トピックからメッセージをコンシュームし、メッセージのフィードを処理するプロセスです。 コンシューマーは、1 つ以上のトピックまたはパーティションから利用することができます。
コンシューマー・グループ
1 人以上のコンシューマーの名前付きグループで、トピック・セットからメッセージをまとめてコンシュームします。 グループ内の各コンシューマーは、割り当てられた特定のパーティションからメッセージを読み取ります。 各パーティションは、グループ内の 1 つのコンシューマーのみに割り当てられます。 割り当ては、「client.id」および「group.id」のコンシューマー・プロパティーによって制御されます。
この API からのコンシューム
接続およびサブスクライブを行うには、Kafka クライアントが必要です。 Kafka クライアント・ライブラリーはさまざまなプログラミング言語で利用可能で、各チャンネルのサンプル・コードは、Java Kafka クライアントで Kafka コンシューマーを使ってイベントをコンシュームするための出発点となります。