W Kafce chciałbym używać tylko jednego brokera, jednego tematu i jednej partycji z jednym producentem i wieloma konsumentami (każdy konsument otrzymuje własną kopię danych od brokera). Biorąc to pod uwagę, nie chcę, aby koszty ogólne korzystania z Zookeepera; Czy nie mogę po prostu korzystać tylko z brokera? Dlaczego Zookeeper musi?
147
Zookeeper is network coordinator in a distributed system. Use ZooKeeper extensively for discovery, resource allocation, leader election, and high priority notifications.
Odpowiedzi:
Tak, Zookeeper jest wymagany do uruchomienia Kafki. Z dokumentacji Kafka Getting Started:
Dlaczego, cóż, ludzie już dawno odkryli, że trzeba mieć jakiś sposób na koordynację zadań, zarządzanie stanem, konfigurację itp. W systemie rozproszonym. Niektóre projekty zbudowały własne mechanizmy (pomyśl o serwerze konfiguracji w klastrze podzielonym na fragmenty MongoDB lub węźle głównym w klastrze Elasticsearch). Inni zdecydowali się skorzystać z Zookeepera jako rozproszonego systemu koordynacji procesów ogólnego przeznaczenia. Tak więc Kafka, Storm, HBase, SolrCloud, żeby wymienić tylko kilka, używają Zookeepera do zarządzania i koordynacji.
Kafka to system rozproszony, stworzony do korzystania z Zookeepera. Fakt, że nie używasz żadnej z rozproszonych funkcji platformy Kafka, nie zmienia sposobu jej budowy. W każdym razie korzystanie z Zookeepera nie powinno powodować dużego obciążenia. Większe pytanie brzmi: dlaczego miałbyś użyć tego konkretnego wzorca projektowego - implementacja Kafka z jednym brokerem nie obejmuje wszystkich cech niezawodności klastra obsługującego wiele brokerów wraz z możliwością skalowania.
źródło
Jak wyjaśnili inni, Kafka (nawet w najnowszej wersji) nie będzie działać bez Zookeepera.
Kafka używa Zookeepera do następujących celów:
Wybór kontrolera . Kontroler jest jednym z brokerów i jest odpowiedzialny za utrzymywanie relacji lider / obserwator dla wszystkich partycji. Kiedy węzeł zostaje zamknięty, to kontroler mówi innym replikom, aby stały się liderami partycji, aby zastąpić liderów partycji w węźle, który odchodzi. Zookeeper służy do wybierania kontrolera, upewnij się, że jest tylko jeden i wybierz nowy, jeśli ulegnie awarii.
Członkostwo w klastrze - jacy brokerzy żyją i są częścią klastra? jest to również zarządzane przez ZooKeeper.
Konfiguracja tematu - jakie tematy istnieją, ile partycji ma każdy z nich, gdzie są repliki, kto jest preferowanym liderem, jakie nadpisania konfiguracji są ustawione dla każdego tematu
(0.9.0) - Kwoty - ile danych może odczytywać i zapisywać każdy klient
(0.9.0) - Listy ACL - kto może czytać i pisać w jakim temacie (stary konsument wysokiego poziomu) - Które grupy konsumentów istnieją, kim są ich członkowie i jakie jest najnowsze przesunięcie każdej grupy z każdej partycji.
[z https://www.quora.com/What-is-the-actual-role-of-ZooKeeper-in-Kafka/answer/Gwen-Shapira ]
Jeśli chodzi o twój scenariusz, tylko jedna instancja brokera i jeden producent z wieloma konsumentami, możesz użyć popychacza do utworzenia kanału i wypchnąć wydarzenie do tego kanału, który konsument może subskrybować i udostępniać te wydarzenia. https://pusher.com/
źródło
Ważna aktualizacja - sierpień 2019:
Zależność ZooKeeper zostanie usunięta z Apache Kafka . Zobacz dyskusję wysokiego poziomu w KIP-500 : Zastąp ZooKeepera samodzielnie zarządzanym kworum metadanych .
Te wysiłki będą wymagały kilku wydań Kafki i dodatkowych KIP. Kafka Controllers przejmie zadania bieżących zadań ZooKeepera. Kontrolerzy wykorzystają zalety dziennika zdarzeń, który jest podstawową koncepcją firmy Kafka.
Niektóre zalety nowej architektury Kafka to prostsza architektura, łatwość obsługi i lepsza skalowalność, np. Zezwolenie na „nieograniczoną liczbę partycji”.
źródło
Zaktualizowano w listopadzie 2020 r
W najnowszej wersji (2.6.0) ZooKeeper jest nadal wymagane do działania platformy Kafka, ale w niedalekiej przyszłości ZooKeeper zostanie zastąpione samodzielnie zarządzanym kworum metadanych .
Zobacz szczegóły w zaakceptowanym KIP-500 .
źródło
Kafka została stworzona do korzystania z Zookeepera. Nie ma przed tym ucieczki.
Kafka jest systemem rozproszonym i używa Zookeepera do śledzenia stanu węzłów klastra kafka. Śledzi również tematy Kafki, partycje itp.
Patrząc na twoje pytanie, wydaje się, że nie potrzebujesz Kafki. Możesz użyć dowolnej aplikacji obsługującej pub-sub, takiej jak Redis , Rabbit MQ lub rozwiązań hostowanych, takich jak Pub-nub .
źródło
IMHO Zookeeper nie jest narzutem, ale znacznie ułatwia życie.
Zasadniczo jest używany do utrzymania koordynacji między różnymi węzłami w klastrze. Jedną z najważniejszych rzeczy dla Kafki jest to, że używa zookeepera do okresowego zatwierdzania offsetów, aby w przypadku awarii węzła mógł wznowić od wcześniej zadeklarowanego offsetu (wyobraź sobie, że sam zajmujesz się tym wszystkim).
Zookeeper odgrywa również istotną rolę w wielu innych celach, takich jak wykrywanie lidera, zarządzanie konfiguracją, synchronizacja, wykrywanie, kiedy nowy węzeł dołącza lub opuszcza klaster itp.
Przyszłe wydania Kafki planują usunąć zależność od zookeeper, ale na razie jest to integralna część.
Oto kilka wierszy zaczerpniętych z ich strony FAQ:
Więcej szczegółów znajdziesz tutaj
źródło
IMHO zookeeper is not an overhead but makes your life a lot easier.
-> nie z punktu widzenia administratora. Zk jest kawałkiem starej javy cruft. Na przykład ma długi nierozwiązany błąd polegający na tym, że nie stosuje się do ttl wpisu dns, więc nie rozwiązuje ponownie wpisu. Z okna znikają możliwości wymiany serwerów. Z radością wymieniłbym to na etcd.Zookeeper to system centralizacji i zarządzania dla dowolnego rodzaju systemów rozproszonych. System rozproszony to różne moduły oprogramowania działające w różnych węzłach / klastrach (mogą znajdować się w odległych geograficznie lokalizacjach), ale działające jako jeden system. Zookeeper ułatwia komunikację między węzłami, dzieląc konfiguracje między węzłami, śledzi, który węzeł jest liderem, który węzeł dołącza / opuszcza itp. Zookeeper to ten, który utrzymuje systemy rozproszone w rozsądku i zachowuje spójność. Zasadniczo Zookeeper jest platformą do orkiestracji.
Kafka to system rozproszony . I dlatego potrzebuje jakiejś orkiestracji dla swoich węzłów, które mogą być geograficznie odległe (lub nie).
źródło
Tak, Zookeeper jest konieczny dla Kafki. Ponieważ Zookeeper jest odpowiedzialny za rodzaj zarządzania klastrem Kafka. Zawiera listę wszystkich brokerów Kafka. Powiadamia Kafkę, jeśli któryś z brokerów ulegnie awarii, partycja ulegnie awarii, nowy broker jest aktywny lub partycja jest aktywna. Krótko mówiąc, ZK na bieżąco informuje każdego brokera Kafka o aktualnym stanie klastra Kafka.
Następnie każdy klient Kafka (producent / konsument) musi tylko połączyć się z dowolnym pojedynczym brokerem, a ten broker ma wszystkie metadane zaktualizowane przez Zookeepera, więc klient nie musi przejmować się bólem głowy związanym z odkrywaniem brokera.
źródło
Oprócz zwykłego przesyłania komunikatów ładunku istnieje wiele innych komunikatów, które mają miejsce w kafce, na przykład
Sam Zookeeper jest systemem rozproszonym składającym się z wielu węzłów w zespole. Zookeeper to scentralizowana usługa do przechowywania takich metadanych.
źródło
Ten artykuł wyjaśnia rolę Zookeeper w Kafce. Wyjaśnia, dlaczego kafka jest bezpaństwowa i jak zookeper odgrywa ważną rolę w rozproszonej naturze kafki (i wielu innych systemów rozproszonych).
źródło
Prośba o uruchomienie Kafki bez Zookeepera wydaje się być dość powszechna. Biblioteka Charlatan zajmuje się tym.
Zgodnie z opisem, Charlatan jest mniej więcej kpiną dla Zookeepera, dostarczającą usługi Zookeeper albo wspierane przez inne narzędzia albo przez bazę danych.
Zetknąłem się z tą biblioteką, mając do czynienia z głównym produktem autorów biblioteki Charlatan; tam działa dobrze…
źródło
Apache ZooKeeper to rozproszony sklep, który służy do świadczenia usług konfiguracyjnych i synchronizacyjnych w wysoce dostępny sposób. W nowszych wersjach Kafki wykonano prace, aby klienci klienta nie zapisywali informacji o tym, jak daleko zużyli wiadomości (zwane przesunięciami) w ZooKeeper.
.This reduced usage did not get rid of the need for consensus and coordination in distributed systems however.
Podczas gdy Kafka zapewnia odporność na błędy i odporność , potrzebne jest coś, aby zapewnić wymagana koordynacja, a ZooKeeper włącza ten element całego systemu.Jednym z przykładów praktycznego zastosowania ZooKeepera w ekosystemie Kafki jest ustalenie, kto jest liderem partycji .
Te pochodzą z książki Kafka w akcji . Zdjęcie pochodzi z tego kursu
źródło