Kafka - partycje czy są niemutowalne?

0

Na https://kafka.apache.org/intro możemy przeczytać, że partycje są niby niemutowalne. Rozumiem to tak, że jak do partycji zapodam rekord to żeby dopisać kolejn muszę utworzyć nową partycję. To by było słabe. Do czego wtedy byłby ten offset. No chyba, że jak dopisujesz coś to podmieniasz partycję na nową zawierającą rekordy poprzedniej i nowe.

title

1

Podejrzewam, że słowo immutable ma tu inne znaczenie niż final przy kolekcji w javie - czyli można dopisać kolejne elementy, ale jak już raz zostaną dodane, to nie mogą się zmienić

5

partycje sa niemutowalne - tzn jak utworzysz topic, podzielisz go na 3 partycje to oznacza, że każda partycja utrzymuje swój offset, który rośnie. jak dodasz rekord do danego topicu i danej partycji to już go nie usuniesz/zmodyfikujesz

producery wrzucaja do topiców rekordy. z drugiej strony są consumery i consumer groupy, które są w stanie czytać rekordy po kolei z topica/partycji i zapewnić fail recovery wlasnie dzieki offsetowi, który mówi gdzie ostatnio consumer czytał. oczywiscie ten offset commitowany jest przez consumerow do kafki po to zeby powiedziec "do offsetu x już przeczytałem i nie było problemów". w razie wywałki consumera moze on np odczytac rekordy od ostatnio commitowanego offsetu

3
Julian_ napisał(a):

Na https://kafka.apache.org/intro możemy przeczytać, że partycje są niby niemutowalne. Rozumiem to tak, że jak do partycji zapodam rekord to żeby dopisać kolejn muszę utworzyć nową partycję. To by było słabe.

Są niemutowalne tak jak listy w Haskellu. Tylko ludzie nie rozumieją jak działają niemutowalne listu w Haskellu. Jak masz listę [3,2,1] i dodajesz z przodu nowy element 4 to stara lista nie jest przepisywana tylko współdzielona. Jest tworzony tylko jeden węzeł nowej listy gdzie głowa węzła to nowa wartość 4 a ogon węzła to stara lista [3,2,1].
Tu jest podobnie. Elementy do partycji mogą być dodawane bez problemy

1

Jak poprzednicy pisali - chodzi o to, że to jest struktura append-only. Utworzenie nowej partycji w ramach topicu to kosztowna operacja skutkująca m. in. tym, że nie da* się zachować semantyki exactly once delivery.

* - https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it https://www.confluent.io/blog/cooperative-rebalancing-in-kafka-streams-consumer-ksqldb/

0

Do tego niemutowalnie nie znaczy nieuswalne. Jest w Kafce coś takiego jak retencja i dane starsze niż X Kafka usunie (można też nie usuwać jak kto lubi).
Ale to co włożysz do topica jest faktycznie niemutowalne, w tym sensie że już tych danych nie podmienisz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1