(バルサベラティボール)(2020年6月19日)

はじめに
メッセージキューまたはストリーミングプラットフォームを使用したことがある場合は、 Kafka は確認する必要があるものです。リアルタイムのデータストリーミングに最適です。
アプリケーションでKafkaを検討している場合、Kafkaは次の使用例に最適です。
- Pub /サブメッセージング
- ストリーム処理
- データストレージ
まず、Kafkaに触れる前に、次のことを知っておく必要があります。Kafkaは非常に高速です。あなたには非常に大きな自由があり、別のメッセージキューイングプラットフォームから来ると、それを間違えやすいです。
この記事では、Kafkaで正しいことを行うことに焦点を当てます。
キー概念:
- メッセージ:データの単位
- トピック:データチャネル
- パーティション:トピックはより多くのパーティションを持つことができます
- オフセット:パーティション内のメッセージの位置
- プロデューサー:アプリケーションが特定のトピックにデータをパブリッシュできるようにします
- 消費者:アプリケーションは1つ以上のトピックからのデータを消費できます。 1つのトピックに複数のコンシューマーを含めることができます。コンシューマーは、トピックの任意の数のパーティションにサブスクライブできます。
- コンシューマーグループ:コンシューマーは、トピックから読み取るコンシューマーグループに編成でき、異なるものから読み取る場合は並行して実行できます。パーティション
- ブローカー:トピックのストレージを管理します
- クラスター:複数のブローカーを含む複数のブローカー
- リーダー/レプリカ:各ブローカーにはトピックのパーティションがいくつか含まれており、それぞれがリーダーまたはレプリカになります。トピックへのすべての書き込みと読み取りは、レプリカの更新を調整するリーダーで実行されます。リーダーが失敗した場合、レプリカがリーダーの役割を果たします
Kafkaの基本の詳細については、こちらをご覧ください。
Node.jsの基本
このイントロでは、Node.jsを使用し、基本的なプロデューサーとコンシューマーを作成します。
まず、 ここで説明されているようにローカルにKafkaをインストールします。
この記事では、ブローカーが1つしかないことを前提としています。
トピックは、アプリケーションが実行される前に作成されます。以下を参照してください。
このイントロを書いている時点で、NodeJSで使用できる3つの安定したパッケージがあります。
これらはすべて同じように機能します。はじめに、node-rdkafkaを使用します( npm install node-rdkafka )
デフォルト設定でローカルにKafkaをインストールし、1つのブローカーを開始したとすると、単純なプロデューサーとコンシューマーを作成できます。
<
トピックを手動で作成します:
プロデューサーを作成し、イベントを作成します:
コンシューマーとコンシューマーイベントを作成します:
これは流動的な消費者の例です。トピックに表示されるイベントを消費します。もう1つの可能性は、consumer.consume(number)のパラメーターとして消費するイベントの数を指定することにより、フローしないコンシューマーを使用することです。この場合、トピックに未消費のメッセージが多数含まれているとメッセージが表示されます。
コミット
Kafkaはフェイルセーフ用に設計されているため、消費者はメッセージを消費済みとしてマークできます— コミット。デフォルトでは、node-rdkafkaは自動コミットを実行します。また、手動で実行することもできます: Consumer.commit()または consumer.commitMessage(message)。
コンシューマーが切断された場合、別のコンシューマーがコミットされたメッセージから続行できます。
Kafkalandへようこそ!お楽しみください!
これは4つの記事のシリーズの最初のものです。マイクロサービス、チャットボット、フィンテックプロジェクトなどのKafka使用の特定のケースをフォローアップします。イェーイ!