2017-03-16 12 views
1

私は過去にカフカと少し仕事をしており、最近はAWS Kinesis Streamにデータパイプラインの一部を移植する必要があります。今私はキネシスが事実上カフカのフォークであり、多くの類似点を共有していることを読んだ。Kinesis Stream上のカフカのようなオフセット?

しかし、私は同じストリームから複数のコンシューマを読み込み、それぞれに対応するオフセットを持つことができません。各データレコードにはシーケンス番号が付いていますが、消費者固有のものは見つかりませんでした(KafkaグループID)。

同じAWS Kinesisストリームで異なる消費者に異なる消費率を設定することは本当に可能ですか?

答えて

3

はい。

複数のKinesisコンシューマアプリケーションを使用できます。あなたは、「最初のアプリ」で、それはDynamoDBの「最初のアプリ・テーブル」内の位置です保存することができます2.

  1. まずコンシューマアプリケーションを(私はそれがカフカの「コンシューマ・グループ」だと思う?)持っているとしましょう。それは、あなたが望むだけ多くのノード(ec2インスタンス)を持つことができます。
  2. 第2のコンシューマアプリケーションも同じストリームで動作し、別のDynamoDBテーブルにその位置を格納することができます。「second-app-table」と言いましょう。

各テーブルには、「アプリケーションYのシャードXで最後に処理された位置は何ですか」という情報が含まれます。したがって、2つのアプリケーションでは、同じ場所のシャードのチェックポイントが別の場所に保存されるため、独立しています。

摂取率については、KCLを使用するコンシューマアプリケーションでは「idleTimeBetweenReadsInMillis」という値があります。これは、Amazon Kinesis API for Get操作のポーリング間隔です。たとえば、最初のアプリケーションは "2000"のポーリング間隔を持つことができるので、ストリームのシャードを2秒ごとにポーリングして、新しいレコードが来たかどうかを確認します。

私はカフカをよく知っていませんが、私が覚えている限りです。 Kineskaの "パーティション"はKinesisの "シャード"、同様にKafkaの "オフセット"はKinesisの "sequence number"です。 Kinesis Consumer Libraryは、保存されたシーケンスに "checkpoint"という用語を使用します。あなたが言ったように、概念は似ています。

+0

これは素晴らしいことです。正確に私が探しているもの。 –

+0

「Checkpoint Kinesis」のグーグルが私のフォローアップの質問に答えました。 –

関連する問題