2016-08-18 9 views
2

最新のkafkaリリースでログ圧縮についてお伝えしており、これがどのように消費者に影響を与えているのか不思議です。消費者は以前と同じように動作しますか、最新の値をすべて入手するための新しいプロセスがありますか?kafkaログ圧縮データを消費

「標準的な」カフカのトピックでは、消費者グループを使用して、最新の値へのポインタを維持します。しかし、カフカが時間の代わりに鍵に基づいて価値を維持しているなら、私は消費者団体がどのように働くのだろうかと思っています。

答えて

2

消費者の仕組みには影響しません。キーごとに最新の値だけに興味があり、トピック全体を読んでいる場合は、キーに「重複」が表示されることがあります(すべての重複が削除されていないか、最後の圧縮が実行された後に新しいメッセージが書き込まれた場合)キーあたりの最新の値について

コンシューマグループについて:トピックが圧縮されると、有効なオフセットの範囲に「穴」があります。トピックを定期的に消費している間は、それらのトピックを自動的にスキップします。 ;すべてのオフセットがオフセットそれとメッセージが離れて圧縮された場合でも、ログ内の有効な位置のままでいること

も注意

https://kafka.apache.org/documentation.html#design_compactionbasicsからこの場合、この位置はログに表示される次の最も高いオフセットと区別できません。例えば、上の図では、オフセット36,37、および38はすべて等価な位置であり、これらのオフセットのいずれかで始まる読み取りは、38で始まるメッセージセットを返す。

0

私の知識によれば、カフカは「ack」を受け取ると、ポインタ/オフセットを更新します。したがって、5番目のメッセージが受信されると(たとえば)、より前のすべてのメッセージが正常に処理されたとみなされます。同様に、オフセットを更新します。 This small applicationには、グループ化された消費者の使用方法が記載されています。

0

ログ圧縮トリガーは、パッシブログセグメントに対してのみトリガーされます。

データが現在書き込まれているファイル - アクティブログセグメント。これらのプロパティ 'log.roll.ms'、 'log.segment.bytes'を使用すると、アクティブなログセグメントをパッシブログセグメントにロールバックできます。

トピックからデータを読み取っている間、消費者はアクティブなログセグメントからキーの最新の値を取得するように注意しなければなりません。

(例)アクティブなログセグメントでは、レコードは のように格納されます。 K1-V1(加算) b。 K1-V2(更新) c。 K1 - NULL(削除)

ログ圧縮の動作の詳細については、hereを参照してください。

関連する問題