2016-06-02 2 views
0

カフカトピックパーティションオフセットの位置は、常に0またはランダムな値から開始します。コンシューマレコードがパーティション内の最初のレコードであることを確認する方法は?見つけ出す方法はありますか?もしあれば教えてください。ありがとう。カフカトピックパーティション

+0

あなたの具体的な疑問は何ですか?ドキュメントには、「各パーティションは順序付けられたメッセージのシーケンスです」(http://kafka.apache.org/documentation.htmlの「order」を検索)という明確な内容が記載されています。あなたは注文について確信していないのですか、それとも2回目か3回目に消費者の位置を変更する手段をとっていますか? – Harald

答えて

0

はいでは、カフカオフセットは0から始まり、完全なレコードのバイト長で終了し、次のレコードはそれ以降のオフセットを選択します。

カフカが配布されているので、コンシューマーが順序付けられた方法でデータを取得することは保証できません。

+0

http://kafka.apache.org/documentation.htmlをご覧ください。* Kafkaは伝統的なメッセージングシステムよりも強力な発注保証を提供しています。 *注文していないメッセージについて話したら、これは配信によるものではなく、パーティション化への影響だと私は言います。 – Harald

+0

私たちがコンシューマーについて話すとき、すべてのデータが目標通りに到着する必要はありません。 – Bector

2

はい、いいえ。

新しいトピックを開始すると、オフセットはゼロから始まります。 –または

  • 物理的には –、すなわち、オフセットが増加している:あなたが使用しているカフカのバージョンによって、オフセットが

    • 論理 –とメッセージによるメッセージをインクリメント(https://issues.apache.org/jira/browse/KAFKA-506が0.8.0以降)です各メッセージのバイト数で表します。 ;例えば、ストレージの最大10ギガバイトで使用します。

      • 保持時間:例えば、先週だけ
      • 保持サイズのメッセージを維持しさらに、古いログ・エントリは、設定条件によってクリアされ

      (0.8.1以降)、それ以上

    • ログ圧縮を保存することができない古いメッセージを削除します。あなただけの各キーの最新の値を保存する(https://cwiki.apache.org/confluence/display/KAFKA/Log+Compactionを参照)

    したがって、は最初ではないかもしれませんオフセット古いメッセージが削除された場合は、ゼロ。さらに、ログ圧縮をオンにすると、一部のオフセットが失われる可能性があります。

    いずれの場合でも、オフセットが有効かどうかをカフカが把握できるため、いつでもオフセットを安全に見つけることができます。無効なオフセットの場合、自動的に次の有効なオフセットに進みます。 したがって、ゼロをオフセットしようとすると、格納されている最も古いメッセージが常に得られます。