Čo ak Kafka spotrebiteľa spracováva správu príliš dlho? Bude Kafka reappoint tejto oblasti do inej spotrebiteľa a správa sa dvojnásobne manipuluje?

0

Otázka

Predpokladajme, že Kafka, 1 partition, 2 consumers.(2. spotrebiteľ je nečinný)

Predpokladajme, že 1. jeden spotrebovaný správu, ide do rukoväť s 3 iné služby a zrazu palice na jednu z nich a nechať ujsť Kafka na časový limit.

Bude Kafka reappoint oblasť na 2. spotrebiteľa a správa sa dvojnásobne manipuluje (predpokladám, že 1. jednej nakoniec podarí)?

1

Najlepšiu odpoveď

1

Čo ak Kafka spotrebiteľa spracováva správu príliš dlho? Bude Kafka reappoint tejto oblasti do inej spotrebiteľa a správa sa dvojnásobne manipuluje?

Áno, to je správne. Ak Kafka spotrebiteľa trvá príliš dlho, zvládnuť správu a následné anketa() je oneskorený, Kafka bude re-vymenovať tejto oblasti do inej spotrebiteľa a správa bude spracovaná opäť (a znova).

Pre viac jasnosti, najprv musíme rozhodnúť a definovať " Ako dlho je príliš dlhé?'.

Toto je definovaná vlastníctva max.poll.interval.ms. Z dokumentov,

Maximálne oneskorenie vyvolaniami anketa() pri použití spotrebiteľa riadenia skupiny. To kladie hornej viazaný na množstvo času, že spotrebiteľ môže byť v nečinnosti pred prijem viac záznamov. Ak anketa() nie je povolaný pred uplynutím tohto časového limitu, potom spotrebiteľa sa považuje za neúspešné a skupina sa bude vyrovnávať s cieľom priradiť oblasti na iného člena.

Spotrebiteľské skupiny je rebalanced ak nie sú hovory do ankety() v tomto čase.

Je tu ešte jedna vlastnosť auto.commit.interval.ms. Auto spáchať kompenzácie pozrite sa bude volať len počas ankety - skontroluje, či čas, ktorý uplynul, je väčší než nakonfigurovaný auto spáchať časového intervalu a, ak je výsledok áno, posun je spáchaný.

Ak Kafka spotrebiteľa trvá príliš dlho, aby proces záznamy, potom následné anketa (volať), je aj oneskorené a odsadí sa vrátil na poslednej ankete() nie sú odhodlaní. Ak vyrovnávať sa deje v tejto dobe, nové spotrebiteľa klientovi pripísané na túto oblasť spustí spracovanie správ znova.

Spotrebiteľské skupiny vyrovnávať a výsledná oblasť preraďovanie sa dá zabrániť zvýšením tejto hodnoty. To zvýši povolený interval medzi verejnej mienky a dať viac času na spotrebiteľov zvládnuť záznamu(s), ktorý sa vrátil zo anketa(). Spotrebitelia budú vstúpiť iba do vyrovnávať vnútri hovor do ankety, čím zvyšuje max ankete interval bude aj odkladu skupina zmeniť rozdelenie.

Je tu ešte jeden problém zvyšovania max ankete interval na veľkú hodnotu. Ak spotrebiteľ zomrie z nejakého dôvodu, to trvá dlhšie, než nakonfigurovaný max.poll.interval.ms interval na detekciu poruchy.

session.timeout.ms a heartbeat.interval.ms sú k dispozícii v tomto prípade, ak chcete zistiť celkové zlyhanie ako predtým, ako je to možné.

Pre viac informácií o tieto parametre:

Vezmite prosím na vedomie, že hodnoty nakonfigurovaný pre session.timeout.ms musí byť v povolenom rozsahu, ako nakonfigurovať v maklér konfigurácia vlastnosti

  • skupiny.min.relácie.časový limit.ms
  • skupiny.max.relácie.časový limit.ms

Inak, nasledujúce výnimkou bude vyhodený pri spustení spotrebiteľa klienta.

Exception in thread "main" org.apache.kafka.common.errors.InvalidSessionTimeoutException:
The session timeout is not within the range allowed by the broker
(as configured by group.min.session.timeout.ms and group.max.session.timeout.ms)

Update: Aby sa zabránilo manipulácii správ znova

Tam je ďalšia metóda v KafkaConsumer triedy commitAsync() na spustenie spáchať kompenzácie prevádzky.

ConsumerRecords<String, String> records = kafkaConsumer.poll(Duration.ofMillis(500));
kafkaConsumer.commitAsync();

Pre viac informácií o commitSync() a commitAsync(), sa prosím informujte tomto vlákne

Spáchanie offset manuálne je akčná povedať, že posun bol spracovaný tak, že Kafka nebude poslať dopustil záznamy pre istú oblasť znova. Keď posuny sú spáchané manuálne, je dôležité si uvedomiť, že ak spotrebiteľ zomrie pred spracovanie záznamov z akéhokoľvek dôvodu, nie je šanca, tieto záznamy nebudú spracované znova.

2021-11-25 07:04:25

Ďakujem, to je jasné. Existujú spôsoby, ako sa vyhnúť druhý manipulácia?
J.J. Beam

@J. J. Lúč aktualizované odpoveď s odkazmi a vzorky
arunkvelu

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................