Różnica między session.timeout.ms oraz max.poll.interval.ms dla Kafka>= 0.10.1

Nie wiem dlaczego potrzebujemy obu session.timeout.ms i max.poll.interval.ms i kiedy mielibyśmy użyć jednego, drugiego lub obu? Wydaje się, że oba ustawienia wskazują górną granicę czasu, w którym koordynator będzie czekał na bicie serca od konsumenta, zanim założy, że jest martwy.

Również jak to się zachowuje w wersjach 0.10.1.0 + opartych na KIP-62 ?

Author: Jeff Widman, 2016-09-27

1 answers

Przed KIP-62 istnieje tylko session.timeout.ms (czyli Kafka 0.10.0 i wcześniej). max.poll.interval.ms wprowadza się za pomocą KIP-62 (część Kafka 0.10.1).

KIP-62 oddziela heartbeats od wywołań do poll() poprzez wątek heartbeat w tle, pozwalając na dłuższy czas przetwarzania (tj. czas między dwoma kolejnymi poll()) niż interwał heartbeat.

Załóżmy, że przetwarzanie wiadomości zajmuje 1 minutę. Jeśli heartbeat i poll są sprzężone (czyli przed KIP-62), musisz ustawić session.timeout.ms większe niż 1 minut, aby zapobiec konsumentowi do czasu. Jednak jeśli konsument umrze, wykrycie nieudanego konsumenta trwa dłużej niż 1 minutę.

KIP-62 oddziela sondaże i bicie serca, umożliwiając wysyłanie bicia serca między dwoma kolejnymi sondami. Teraz masz uruchomione dwa wątki, wątek heartbeat i wątek przetwarzania i tak KIP-62 wprowadził limit czasu dla każdego z nich. {[0] } jest dla wątku heartbeat, podczas gdy {[2] } jest dla wątku przetwarzania.

Zakładasz, ustawiasz session.timeout.ms=30000, tak więc wątek pulsu konsumenta musi wysłać bicie serca do brokera przed upływem tego czasu. Z drugiej strony, jeśli przetwarzanie pojedynczej wiadomości zajmuje 1 minutę, możesz ustawić max.poll.interval.ms większą niż jedna minuta, aby dać wątkowi przetwarzającemu więcej czasu na przetworzenie wiadomości.

Jeśli wątek przetwarzania umrze, trzeba max.poll.interval.ms, aby to wykryć. Jeśli jednak umiera cały konsument (a umierający wątek przetwarzania najprawdopodobniej zawiesza całego konsumenta, w tym wątek bicia serca), trwa to tylko session.timeout.ms aby go wykryć.

[13]}chodzi o to, aby umożliwić szybkie wykrycie upadającego konsumenta, nawet jeśli samo przetwarzanie trwa dość długo.
 181
Author: Matthias J. Sax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-01 01:52:07