2016-06-02 8 views
0

Kafka Topic Partition Offset-Position immer von 0 oder Zufallswert und Wie sicher der Consumer-Datensatz ist der erste Datensatz in der Partition? Gibt es einen Weg, das herauszufinden? Bitte lass es mich wissen. Vielen Dank.Kafka Topic Partition

+0

Was sind Ihre spezifischen Zweifel? Die Dokumentation besagt eindeutig: "Jede Partition ist eine [...] geordnete Folge von Nachrichten" (Suche nach "Bestellung" auf http://kafka.apache.org/documentation.html). Sind Sie sich bei der Bestellung unsicher oder möchten Sie den Verbraucher beim zweiten oder dritten Mal neu positionieren? – Harald

Antwort

0

Ja, Kafka-Offset beginnt bei 0 und endet mit der Bytelänge des vollständigen Datensatzes. Der nächste Datensatz wählt dann den Offset von dort aus.

Da Kafka vertrieben wird, können wir nicht garantieren, dass der Verbraucher die Daten in geordneter Weise erhält.

+0

Bitte lesen Sie http://kafka.apache.org/documentation.html, um zu finden * Kafka hat auch stärkere Bestellgarantien als ein herkömmliches Nachrichtensystem. * Wenn wir über nicht bestellte Nachrichten sprechen, dann liegt das nicht an der Verteilung, sondern eher an der Partitionierung, würde ich sagen. – Harald

+0

Wenn wir über Consumer sprechen, ist es nicht notwendig, dass alle Daten geordnet am Ziel ankommen. – Bector

2

Ja und nein.

Wenn Sie ein neues Thema beginnen, beginnt der Offset bei Null. In Abhängigkeit von der Kafka-Version Sie verwenden, sind die Offsets

Darüber hinaus werden alte Protokolleinträge durch konfigurierbare Bedingungen gelöscht:

  • Retentionszeit: zB Nachricht der letzten Woche halten nur
  • Aufbewahrungsgröße: zB bei max 10 GB Speicher verwenden; Löschen Sie alte Nachrichten, die nicht mehr
  • Log-Verdichtung gespeichert werden können (seit 0.8.1): Sie können nur den letzten Wert für jeden Schlüssel erhalten (siehe https://cwiki.apache.org/confluence/display/KAFKA/Log+Compaction)

Somit versetzt die erste nicht sein könnte Null wenn alte Nachrichten gelöscht wurden. Wenn Sie die Protokollkomprimierung aktivieren, fehlen außerdem einige Offsets.

In jedem Fall können Sie immer sicher nach einem Offset suchen, da Kafka herausfinden kann, ob der Offset gültig ist oder nicht. Bei einem ungültigen Offset wird automatisch zum nächsten gültigen Offset gesprungen. Wenn Sie also versuchen, Null zu versetzen, erhalten Sie immer die älteste Nachricht, die gespeichert wird.

Verwandte Themen