Чи обов'язковий зоопарк для Кафки?


134

У Kafka я хотів би використовувати лише одного брокера, одну тему та єдиний розділ, що має одного виробника та декількох споживачів (кожен споживач отримує власну копію даних від брокера). Враховуючи це, я не хочу витрачати гроші на використання Zookeeper; Чи можу я не просто використовувати лише брокера? Чому зоопарк повинен?


12
Однією з найбільших дизайнерських цілей Kafka є розгортання кластерів. Це проблема, яку вони вирішують, і було б нерозумно зробити версію без zk для окремого сервера. У мене таке відчуття, що кафка - це не інструмент для вашої роботи, але вам краще буде просто використовувати файл ванілі ..
RickyA

5
Я дуже хотів би знати, що ви доопрацювали? Оскільки ви не вибрали жодної відповіді, я припускаю, що у вас було власне рішення для цього. Дякую !
Картікеян

Jocko - це голанг-реалізація Кафки без зоозахисної залежності та єдиної бінарної установки
Арун Гопалпурі,

1
Zookeeper був видалений, дивіться відповідь нижче - stackoverflow.com/a/57328140/1699956
Mangat Rai Моді

1
просто додати, якщо ви прочитаєте, що робить зоопарк, у вас з’явиться ідея -Zookeeper is network coordinator in a distributed system. Use ZooKeeper extensively for discovery, resource allocation, leader election, and high priority notifications.
roottraveller

Відповіді:


128

Так, для запуску Kafka потрібен Zookeeper. З документації щодо початку роботи Kafka:

Крок 2: Запустіть сервер

Kafka використовує zookeeper, тому вам потрібно спочатку запустити сервер zookeeper, якщо у вас його ще немає. Ви можете використовувати скрипт зручності, упакований з kafka, щоб отримати швидкий і брудний екземпляр зоопарку з одним вузлом.

Щодо того, добре люди давно виявили, що вам потрібно мати певний шлях до координації завдань, управління державою, конфігурації тощо в розподіленій системі. Деякі проекти мають вбудовані власні механізми (подумайте про конфігураційний сервер у клаптиковому кластері MongoDB або про вузол Master у кластері Elasticsearch). Інші вирішили скористатися системою Zookeeper як розподіленої системи координації процесів загального призначення. Тож Kafka, Storm, HBase, SolrCloud лише назву декількох, які використовують Zookeeper для управління та координації.

Kafka є розподіленою системою і створена для використання Zookeeper. Те, що ви не використовуєте жодної з розподілених функцій Kafka, не змінює способу її побудови. У будь-якому випадку від використання Zookeeper не повинно бути великих витрат. Більш важливим питанням є те, чому б ви використовували саме цю схему дизайну - одна брокерська реалізація Kafka не вистачає на всі функції надійності кластера з багатьма брокерами, а також здатність до масштабування.


9
Насправді, kafka розроблений таким чином, що навіть у вас, якщо ви переходите з одним брокером, він все ще розподіляється в режимі, але з коефіцієнтом реплікації 1 - не буде механізмів швидкого доступу або спеціального режиму (і це добре, насправді).
om-nom-nom

2
Kafka 0.8.1 вимагає zk. І мені цікаво, якщо в Кафці немає абстрактного шару, який би працював з системою координації, то як іншу систему координації можна включити до Кафки.
stanleyxu2005

Важливе оновлення stackoverflow.com/a/57328140/3438570
теодоз

64

Як пояснили інші, Кафка (навіть в останній версії) не буде працювати без Зоокетера.

Kafka використовує Zookeeper для наступного:

Вибір контролера . Контролер є одним з посередників і відповідає за підтримку відносин лідер / послідовник для всіх розділів. Коли вузол вимикається, саме контролер повідомляє іншим реплікам стати лідерами розділів, щоб замінити лідери розділів на той вузол, який відходить. Zookeeper використовується для вибору контролера, переконайтесь, що він є лише один, і виберіть новий, якщо він вийде з ладу.

Членство в кластері - які брокери живі та частина кластеру? цим також керується через ZooKeeper.

Конфігурація теми - які теми існують, скільки в кожному розділі, де є репліки, хто є кращим лідером, які параметри конфігурації встановлюються для кожної теми

(0.9.0) - Квоти - скільки даних кожному клієнту дозволяється читати та писати

(0.9.0) - ACL - кому дозволено читати та писати на яку тему (старий споживач високого рівня) - Які групи споживачів існують, хто є їх членами та яке останнє зміщення отримала кожна група з кожного розділу.

https://www.quora.com/What-is-the-actual-role-of-ZooKeeper-in-Kafka/answer/Gwen-Shapira ]

Що стосується вашого сценарію, лише один екземпляр брокера та один виробник з кількома споживачами, ви можете використовувати штовхач для створення каналу та надіслати подію на той канал, на який споживач може підписатись та передати ці події. https://pusher.com/


3
Ви хочете відредагувати "останню версію" у фактичну версію. Покращує ваш вік відповідей краще.
akauppi

6
ви скопіювали відповідь з quora.com/What-is-the-actual-role-of-ZooKeeper-in-Kafka/answer/…
Junchen Liu

Додаю посилання, останній абзац спочатку від мене.
Кевін Лі

47

Важливе оновлення - серпень 2019 року:

Залежність від ZooKeeper буде видалена з Apache Kafka . Дивіться дискусію на високому рівні в KIP-500 : Замініть ZooKeeper на кворум метаданих, що керується самоврядуваннями .

Ці зусилля потребують кількох випусків Kafka та додаткових KIP. Контролери Kafka візьмуть на себе завдання поточних завдань ZooKeeper. Контролери використовуватимуть переваги Журналу подій, який є основною концепцією Kafka.

Деякі переваги нової архітектури Kafka - це простіша архітектура, простота операцій та краща масштабованість (наприклад, дозволяють "необмежену кількість розділів".


17

Оновлено липня 2020 року

Для останньої версії (2.5.0) для запуску Kafka все ще потрібен ZooKeeper, але найближчим часом ZooKeeper буде замінено на Кворум метаданих, що керується самоврядуваннями .

Деталі див. У прийнятому KIP-500 .


11

Kafka побудований для використання Zookeeper. Від цього не врятуватися.

Kafka є розподіленою системою і використовує Zookeeper для відстеження стану кластерних вузлів kafka. Він також відстежує теми Кафки, розділи тощо.

Дивлячись на ваше запитання, здається, вам не потрібна Кафка. Ви можете використовувати будь-яку програму, яка підтримує pub-sub, наприклад Redis , Rabbit MQ, або розміщені рішення, такі як Pub-nub .


9

IMHO Zookeeper - це не накладні витрати, але значно полегшує ваше життя.

В основному він використовується для підтримки координації між різними вузлами кластера. Однією з найважливіших речей для Кафки є те, що вона використовує зоокеер, щоб періодично здійснювати компенсації, щоб у разі відмови вузла він міг відновитись із раніше здійсненого зсуву (уявіть, що ви самі про це подбаєте власноруч).

Zookeeper також відіграє важливу роль для виконання багатьох інших цілей, таких як виявлення лідерів, управління конфігурацією, синхронізація, виявлення, коли новий вузол приєднується або залишає кластер тощо.

Майбутні випуски Kafka планують зняти залежність від зоопарку, але на сьогоднішній день це невід'ємна її частина.

Ось кілька рядків, взятих із їхньої сторінки поширених запитань:

Після того, як кворум Zookeeper зменшився, брокери можуть призвести до поганого стану і не можуть нормально обслуговувати запити клієнтів тощо. Хоча коли кворум Zookeeper відновиться, брокери Kafka повинні мати можливість відновити нормальний стан автоматично, все ж є кілька випадків вони не можуть, і для того, щоб повернути його в норму, потрібно жорстке вбивство та відновлення. Тому рекомендується уважно стежити за вашим кластером зоопарку та забезпечувати його, щоб він працював.

Більш детальну інформацію ви знайдете тут


13
Зоопарк - це великий головний біль. У HBase. У Кафці. У шторм. У Kafka / ZK існують багаторічні помилки, які змусили мою команду відмовитися від неї на користь RabbitMQ. Встановлення HBase передбачає час для вирішення проблем із ZK. Однак відповідь, пов’язана з ОП, є правильною: потрібен ЗК.
javadba

2
Правда, є проблеми з сумісністю помилок та версій (принаймні, з Kafka та ZK), але головний намір зоопарку - керувати тими складними завданнями, які потрібні для будь-якої розподіленої системи. на zk може бути не мудрий дзвінок. Можливо, саме тому kafka намагається зменшити залежності від zk в пізніших версіях. З іншого боку, я вважаю, що у RabitMQ та Kafka дуже різні дизайнерські філософії і спрямовані на вирішення різних випадків використання, але, на мою думку, це виходить за рамки цієї дискусії :)
user2720864

Так, kafka є кращим для сценаріїв з високим навантаженням. Ми вирішили зайнятися RabbitMQ до тих пір, поки / явно не вимагатимемо цих переваг. Програмування в RabbitMQ було також простішим: для Кафки існували складні залежності від версії scala.
javadba

4
IMHO zookeeper is not an overhead but makes your life a lot easier.-> не з точки зору sysop. Zk - це шматок відсталого старого java cruft. Наприклад, він має давню помилку, оскільки він не дотримується ttl запису в dns, тому не повторно вирішить запис. З вікна виходить можливість заміни вашого сервера. Я б із задоволенням обміняв це на etcd.
RickyA

"Ми вирішили зробити RabbitMQ до / доки явно не вимагатимемо цих переваг". Бажаю, щоб моя команда прозріла так. ІМХО, ми, очевидно, не маємо достатньо високого навантаження, щоб виправдати Кафку, але ми все одно використовуємо Кафку :(
містер Сміт

4

Zookeeper - це система централізації та управління будь-яким типом розподілених систем. Розподілена система - це різні програмні модулі, що працюють на різних вузлах / кластерах (можливо, в географічно віддалених місцях), але працюють як одна система. Zookeeper полегшує зв’язок між вузлами, обмінюється конфігураціями між вузлами, він відслідковує, який вузол є лідером, який вузол приєднується / залишає і т. Д. Zookeeper - це той, хто підтримує розподілену систему в чистоті і підтримує послідовність. Zookeeper в основному є платформою для оркестрації.

Кафка - а розподілена система. А значить, для її вузлів потрібна якась оркестрація, яка може бути географічно віддаленою (чи ні).


3

Так, Zookeeper - це обов'язково за задумом Kafka. Тому що Zookeeper несе відповідальність за керування кластером Kafka. У ньому є список усіх брокерів Kafka, які є в ньому. Він сповіщає Кафку, якщо якийсь брокер знищиться, або розділ знизиться, або новий брокер вгору або розділ вгору. Коротше кажучи, ZK інформує кожного брокера Kafka про поточний стан кластеру Kafka.

Тоді кожен клієнт Kafka (виробник / споживач), що потрібно зробити, - це з'єднатися з будь-яким одним брокером, і цей брокер має усі метадані, оновлені Zookeeper, тому клієнту не потрібно турбуватися про головний біль відкриття брокера.


3

Окрім звичайної передачі корисного навантаження, у Kafka, наприклад, існує багато інших комунікацій

  • Події, пов’язані з брокерами, які вимагають членства в кластері.
  • Події, пов’язані з посередництвом посередників
  • Отримання налаштувань конфігурації завантажувача.
  • Події, пов’язані з оновленнями контролера та лідера.
  • Допоможіть оновлення статусу, як оновлення Heartbeat.

Сам Zookeeper - це розподілена система, що складається з декількох вузлів в ансамблі. Zookeeper - це централізована служба для підтримки таких метаданих.


1

У цій статті пояснюється роль Зоопарку в Кафці. Це пояснює, як кафка без громадянства та як зоокепер відіграє важливу роль у розподіленому характері кафки (та багатьох інших розподілених систем).


1

Прохання управляти Kafka без Zookeeper, здається, досить поширене. Бібліотека Charlatan вирішує це.

Згідно з описом, Charlatan є більш-менш глузливим для Zookeeper, надаючи послуги Zookeeper або підкріплені іншими інструментами або базою даних.

Я зіткнувся з цією бібліотекою, коли мав справу з основним твором авторів для Шарлатанської бібліотеки; там це чудово працює ...


0

По-перше

Apache ZooKeeper - це розповсюджений магазин, який використовується для надання налаштування та синхронізації високодоступним способом. В останніх версіях Kafka робота робилася для того, щоб споживачі клієнтів не зберігали інформацію про те, наскільки вона споживає повідомлення (звані компенсації) у ZooKeeper. .This reduced usage did not get rid of the need for consensus and coordination in distributed systems however.У той час як Kafka забезпечує відмову та стійкість , щось потрібно для того, щоб забезпечити необхідна координація, і ZooKeeper дозволяє цю частину загальної системи.

По-друге

Погодження того, хто є лідером розділу , є одним із прикладів практичного застосування ZooKeeper в екосистемі Kafka.

Zookeeper would work if there was even a single broker. 

Це з книги Kafka In Action . Зображення з цього курсу

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.