web-dev-qa-db-ja.com

Kafka:コンシューマーAPIとStreams API

私は最近Kafkaを学び始め、これらの質問に終わりました。

  1. ConsumerとStreamの違いは何ですか?私にとって、ツール/アプリケーションがKafkaからのメッセージを消費する場合、Kafkaの世界の消費者です。

  2. これはKafkaからメッセージを消費したり、Kafkaにメッセージを生成したりするため、Streamはどのように違いますか?そして、Consumer APIを使用して独自のコンシューマアプリケーションを記述し、必要に応じて処理するか、コンシューマアプリケーションからSparkに送信できるため、なぜ必要なのでしょうか。

私はこれについてグーグルをしましたが、これに対する良い答えは得られませんでした。この質問があまりにも些細な場合は申し訳ありません。

61
SR Nathan

2018年4月9日更新:最近では、次も使用できます- KSQL 、Kafkaでデータを処理するためのKafkaのストリーミングSQLエンジン。 KSQLはKafkaのStreams APIの上に構築されており、「ストリーム」と「テーブル」の第一級のサポートも付いています。 KafkaまたはScalaでプログラミングコードを記述する必要がないJava St​​reamsのSQL兄弟のように考えてください。

consumer APIとStreams APIの違いは何ですか?

KafkaのStreams API( https://kafka.Apache.org/documentation/streams/ )は、Kafkaのプロデューサーおよびコンシューマークライアントの上に構築されています。 Kafkaコンシューマクライアントよりも大幅に強力であり、表現力もあります。 Kafka St​​reams APIの機能の一部を次に示します。

  • 1回だけの処理セマンティクスをサポート(Kafkaバージョン0.11以降)
  • ストリーミングを含むフォールトトレラントステートフル(もちろんステートレス)処理をサポート joinsaggregations 、および- ウィンドウ 。つまり、アプリケーションの処理状態をすぐに管理できます。
  • event-time processing および processing-time および ingestion-time に基づく処理をサポート
  • ストリームとテーブル の両方を一流でサポートします。これは、ストリーム処理がデータベースと出会う場所です。実際には、ほとんどのストリーム処理アプリケーションは、それぞれのユースケースを実装するためにストリームとテーブルの両方を必要とするため、ストリーム処理テクノロジーに2つの抽象化のいずれかがない場合(テーブルのサポートがないなど) (それで幸運...)
  • インタラクティブクエリ (「クエリ可能な状態」とも呼ばれる)をサポートして、最新の処理結果を他のアプリケーションやサービスに公開します
  • より表現力豊かです:(1)関数型プログラミングスタイル DSL とともに、mapfilterreduceなどの操作と(2 )命令型スタイル Processor API 例えば複合イベント処理(CEP)を実行し、(3)DSLとプロセッサAPIを組み合わせることもできます。

http://docs.confluent.io/current/streams/introduction.html を参照して、Kafka St​​reams APIのより詳細でありながら高レベルの紹介を参照してください。下位レベルのKafkaコンシューマクライアントとの違いを理解するのに役立ちます。 Kafka St​​reams APIのDockerベースのチュートリアル もあります。これは今週初めに 私がブログで紹介しました です。

Kafka St​​reams APIは、Kafkaからメッセージを消費したり、Kafkaにメッセージを生成したりするため、どのように違いますか

はい、Kafka St​​reams APIは、Kafkaへのデータの読み取りと書き込みの両方を行うことができます。

そして、Consumer APIを使用して独自のコンシューマアプリケーションを記述し、必要に応じて処理するか、コンシューマアプリケーションからSparkに送信できるため、なぜ必要なのでしょうか。

はい、独自のコンシューマーアプリケーションを作成できます-前述したように、Kafka St​​reams APIはKafkaコンシューマークライアント(およびプロデューサークライアント)自体を使用しますが、 Streams APIが提供するすべての固有の機能を手動で実装します。 「無料」で入手できるものについては、上記のリストをご覧ください。したがって、ユーザーがより強力なKafka St​​reams APIではなく、低レベルのコンシューマクライアントを選択するのはかなりまれな状況です。

76
Michael G. Noll