Po dodaniu lub opuszczeniu nowego konsumenta/brokera, Kafka uruchamia operację równoważenia. Czy Kafka Rebalancing jest operacją blokującą. Czy konsumenci Kafki są zablokowani podczas operacji równoważenia?Jak działa rebalancing konsumenta w Kafce?
Odpowiedz
Zależy od tego, co masz na myśli przez "zablokowany". Jeśli masz na myśli "czy istniejące połączenia są zamknięte, gdy wynurza się rebalans", odpowiedź brzmi "tak". Obecny algorytm przywracania równowagi Kafki jest niestety niedoskonały.
Oto, co dzieje się podczas przywracania równowagi konsumentom.
Załóżmy, że mamy temat z 10 partycjami (0-9) i jednym konsumentem (pozwala wymienić go na consumer1
). Gdy pojawia się drugi konsument (consumer2
), zadanie ponownego wyzwolenia wyzwala dla nich obu (consumer1
otrzymuje dane zdarzenie, consumer2
dokonuje wstępnego ponownego wyważenia). Teraz consumer1
zamyka wszystkie istniejące połączenia (nawet te, które zostaną wkrótce ponownie otwarte) i zwalnia własność partycji w Zookeeperze dla wszystkich 10 partycji.
Następnie uruchamia algorytm przydziału partycji i decyduje, które partycje powinny zostać odebrane i ponownie przypisuje prawa własności do partycji w Zookeeperze. Jeśli roszczenie powiodło się, consumer1
rozpoczyna pobieranie nowych partycji.
W międzyczasie consumer2
uruchamia również algorytm przypisywania partycji i stara się również o jego partycje w Zookeeperze. Roszczenie zakończy się powodzeniem tylko wtedy, gdy consumer1
zwalnia własność tych partycji. Gdy roszczenie powiodło się, consumer2
rozpoczyna pobieranie lub jeśli nie uda się odebrać partycji w ramach określonej liczby ponownych prób, otrzymasz wyjątek od rebalance failed after n retries
.
Jak zauważył, zamiast po prostu zamknięcie połączenia i uwolnienia własności przegród consumer1
nie posiadają już, to niepotrzebnie zamyka wszystkie swoje połączenia i restartuje tylko z mniejszej ilości partycji. Ta sama historia z dodawaniem partycji (kiedy korzystamy z filtra wieloznacznego i pojawia się nowy temat) - WSZYSTKIE połączenia są zamykane, a następnie otwierane ponownie, zamiast otwierania nowych.
Mam nadzieję, że to odpowie na twoje pytanie - pobieranie zatrzymuje się po ponownym wyrzuceniu kopnięć.
- 1. Jak korzystać z wielu klientów w Kafce?
- 2. Jak ustawić rozmiar wiadomości w Kafce?
- 3. Algorytm Rebalancing Konsumentów Kafka
- 4. Czy Kafka ma konsumenta wsadowego?
- 5. RabbitMQ jak dławić konsumenta
- 6. Jak wyświetlić listę producentów w kafce
- 7. Przesunięcia przechowywane w Zookeeperze lub Kafce?
- 8. Gdzie jest konfiguracja konsumenta huey?
- 9. Tworzenie funkcji Java i konsumenta
- 10. Jak zaimplementować dostawcę OAuth2 i konsumenta w C# .NET
- 11. Konkurencja Konsumenta w Redis Pub/Sub jest obsługiwana?
- 12. Czy można dodać partycje do istniejącego tematu w Kafce 0.8.2
- 13. Czy możliwe jest uzyskanie określonego przesunięcia komunikatu w Kafce + SparkStreaming?
- 14. Czy producent/model konsumenta jest równy aktorowi?
- 15. Model producenta-konsumenta - semafor binarny lub mutex?
- 16. wykonania Java Konsumenta Producer rzuca java.lang.IllegalMonitorStateException
- 17. Jak wdrożyć modelu pojedynczego konsumenta wielu kolejek do RabbitMQ
- 18. Jaki jest najładniejszy idiom dla producenta/konsumenta w Go?
- 19. Django REST Framework - API konsumenta OAuth2 od zewnętrznego dostawcy
- 20. Szablon konsumenta pliku wielbłąda - wątki pozostające przy życiu
- 21. javax.jms.MessageConsumer zawiesza się na odbiór po zamknięciu konsumenta
- 22. Bufor pojedynczego producenta/bufora konsumenta we wspólnej pamięci
- 23. Integracja z Twitterem: klucz konsumenta/tajna para już ustawiona
- 24. Jak sprawdzić, czy SSL działa dla Kafki
- 25. Jak obsługiwać powiadomienie o anulowaniu konsumenta RabbitMQ podczas korzystania z Spring ChannelAwareMessageListener
- 26. Jak działa string.unpack w Ruby?
- 27. Działa jak drzewo w Rails3?
- 28. Jak podział działa w MIX?
- 29. Jak działa MatchEvaluator w Regex.Replace?
- 30. Jak działa "zadzwoń" w javascript?