カフカランドへようこそ!

投稿日:

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

はじめに

メッセージキューまたはストリーミングプラットフォームを使用したことがある場合は、 Kafka は確認する必要があるものです。リアルタイムのデータストリーミングに最適です。

アプリケーションでKafkaを検討している場合、Kafkaは次の使用例に最適です。

  • Pub /サブメッセージング
  • ストリーム処理
  • データストレージ

まず、Kafkaに触れる前に、次のことを知っておく必要があります。Kafkaは非常に高速です。あなたには非常に大きな自由があり、別のメッセージキューイングプラットフォームから来ると、それを間違えやすいです。

この記事では、Kafkaで正しいことを行うことに焦点を当てます。

キー概念:

  • メッセージ:データの単位
  • トピック:データチャネル
  • パーティション:トピックはより多くのパーティションを持つことができます
  • オフセット:パーティション内のメッセージの位置
  • プロデューサー:アプリケーションが特定のトピックにデータをパブリッシュできるようにします
  • 消費者:アプリケーションは1つ以上のトピックからのデータを消費できます。 1つのトピックに複数のコンシューマーを含めることができます。コンシューマーは、トピックの任意の数のパーティションにサブスクライブできます。
  • コンシューマーグループ:コンシューマーは、トピックから読み取るコンシューマーグループに編成でき、異なるものから読み取る場合は並行して実行できます。パーティション
  • ブローカー:トピックのストレージを管理します
  • クラスター:複数のブローカーを含む複数のブローカー
  • リーダー/レプリカ:各ブローカーにはトピックのパーティションがいくつか含まれており、それぞれがリーダーまたはレプリカになります。トピックへのすべての書き込みと読み取りは、レプリカの更新を調整するリーダーで実行されます。リーダーが失敗した場合、レプリカがリーダーの役割を果たします

Kafkaの基本の詳細については、こちらをご覧ください。

Node.jsの基本

このイントロでは、Node.jsを使用し、基本的なプロデューサーとコンシューマーを作成します。

まず、 ここで説明されているようにローカルにKafkaをインストールします。

この記事では、ブローカーが1つしかないことを前提としています。

トピックは、アプリケーションが実行される前に作成されます。以下を参照してください。

このイントロを書いている時点で、NodeJSで使用できる3つの安定したパッケージがあります。

  1. Node-rdkafka
  2. KafkaJS
  3. Kafka-node

これらはすべて同じように機能します。はじめに、node-rdkafkaを使用します( npm install node-rdkafka

デフォルト設定でローカルにKafkaをインストールし、1つのブローカーを開始したとすると、単純なプロデューサーとコンシューマーを作成できます。

<

トピックを手動で作成します:

プロデューサーを作成し、イベントを作成します:

コンシューマーとコンシューマーイベントを作成します:

これは流動的な消費者の例です。トピックに表示されるイベントを消費します。もう1つの可能性は、consumer.consume(number)のパラメーターとして消費するイベントの数を指定することにより、フローしないコンシューマーを使用することです。この場合、トピックに未消費のメッセージが多数含まれているとメッセージが表示されます。

コミット

Kafkaはフェイルセーフ用に設計されているため、消費者はメッセージを消費済みとしてマークできます— コミット。デフォルトでは、node-rdkafkaは自動コミットを実行します。また、手動で実行することもできます: Consumer.commit()または consumer.commitMessage(message)

コンシューマーが切断された場合、別のコンシューマーがコミットされたメッセージから続行できます。

Kafkalandへようこそ!お楽しみください!

これは4つの記事のシリーズの最初のものです。マイクロサービス、チャットボット、フィンテックプロジェクトなどのKafka使用の特定のケースをフォローアップします。イェーイ!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です