To je do značné míry konfigurovatelné a *vždy* to závisí na kooperaci producenta. Zejména producent si může vynutit ack zprávy až ve chvíli, kdy ji přijme leader. To je první věc, kterou je možné nastavit (ack je běžně nastavený na nulu/false).
Dále je možné si vyžádat ack až ve chvíli, kdy ji přijmou všechny ISR (tedy in-sync replikas v daný okamžik). tím se zaručí, že i když leader zhavaruje, bude ve všech online replikách. Jde tam ještě nastavit minimální počet ISR, takže to nemusí být všechny (ale konfig.option z hlavy nedám).
Potom je možné si přes unclean.leader.election=false vynutit, aby se leaderem nikdy nestala replika, který není ISR. To může vést k situaci, kdy se "Kafka zastaví" ve chvíli, kdy se brokeři připojují a odpojují a žádný není ISR.
Pavel: pozor na unclean.leader.election=false, je to velice nebezpečné na stabilitu a jak píšeš, může to vést k nefunkčnosti celé kafky jen kvůli nemožnosti u nějaké partition zvolit leadera. Lepší buď změnit proces election vlastní implementací nebo jen monitorovat, kdy se leaderem stalo non ISR a data poslat znovu nebo je naopak vytáhnout z jiných partition. Chce to vždy pečlivě zvažovat při každém nasazení.
To si určuješ sám v publisheru, option acks řiká na kolik replik čekáš než se ti vrátí operace jako úspěšně poslaná, zbytek replik je poté asynchronních.
Po pádu leadera proběhne volba nového leadera pro všechny partition, který leader vlastnil, dokud není zvolen nový leader, do partition se nemůže zapisovat. Volba je vesměs náhodná, je ale možnost jí upravit dle vlastních potřeb, což i děláme.
Při volbě nového leadera může dojít ke ztrátě zpráv, pokud byl zvolen leader s partition, která je out of sync (tj. zatím neproběhla asynchronní replikace a synchronní producer nevyžadova). Tohle je tradeoff mezi spolehlivostí a dostupností a je potřeba to při každém nasazení promyslet.
Při zápisu pak díky tomu může dojít k situaci, kdy ti acks=all selže, protože zrovna jeden broker není dostupný, ale data se fyzicky stihnou všude zapsat. Ty je pak zkusíš poslat znovu a dojde k duplicitě. Opět je to věc, s kterou musíš aplikačně počítat.