Professional Documents
Culture Documents
Apache Kafka
Apache Kafka
Реферат
з дисципліни «Технології комп'ютерного проектування»
Виконала:
студентка групи АИ-202
Полянський М.О.
Перевірив:
Іванов О. В.
Одеса 2022
Зміст
Вступ.........................................................................................................................2
1. Kafka та класичні сервіси черг.........................................................................2
2. Структура даних................................................................................................8
3. Consumer Groups.............................................................................................11
4. Apache ZooKeeper..............................................................................................16
Висновки................................................................................................................17
2
Вступ
3
1. Kafka та класичні сервіси черг
1) сервер,
2) продюсери, які відправляють повідомлення на якусь іменовану
чергу, заздалегідь сконфігуровану адміністратором на сервері,
3) консьюмери, які зчитують ті самі повідомлення принаймні їх
появи.
4
pull-модель - консьюмери самі надсилають запит раз на n секунд на
сервер для отримання нової порції повідомлень. За такого підходу клієнти
можуть ефективно контролювати власне навантаження. Крім того, pull-
модель дозволяє групувати повідомлення в батчі, таким чином досягаючи
кращої пропускної спроможності. До мінусів моделі можна віднести
потенційну розбалансованість навантаження між різними консьюмерами, а
також більш високу затримку обробки даних.
5
Типовий життєвий цикл повідомлень у системах черг:
6
Типовий життєвий цикл повідомлень у системах черг
7
Повідомлення Kafka не видаляються брокерами в міру їх
обробки консьюмерами - дані Kafka можуть зберігатися днями, тижнями,
роками.
8
Kafka полегшує завдання. Досить надіслати повідомлення лише один
раз, а консьюмери сервісу надсилання повідомлень та консьюмери
статистики самі вважають його за необхідності.
2. Структура даних
9
Кожне повідомлення (event або message) у Kafka складається з ключа,
значення, таймстампа та опціонального набору метаданих (так званих
хедерів).
Наприклад:
10
Кожна партиція має «лідер» (Leader) — брокер, який працює з
клієнтами. Саме лідер працює з продюсерами і загалом віддає повідомлення
консьюмерам. До лідера здійснюють запити фоловери (Follower) - брокери,
які зберігають репліку всіх цих партицій. Повідомлення завжди
надсилаються лідеру і, у загальному випадку, читаються з лідера.
11
Основна структура даних в Kafka - це розподілений, лог, що
реплікується. Кожна партиція - це і є той самий лог, що реплікується, який
зберігається на диску. Кожне нове повідомлення, відправлене продюсером до
партиції, зберігається в «голову» цього лога і отримує свій унікальний,
монотонно зростаючий offset (64-бітове число, яке призначається самим
брокером).
12
3. Consumer Groups
13
Якщо ми додамо ще одного консьюмера в групу, то партиції
автоматично розподіляться між ними, і c1 тепер читатиме повідомлення з
першої та другої партиції, а c2 - з третьої. Додавши ще одного консьюмера
( c3 ), ми досягнемо ідеального розподілу навантаження, і кожен з
консьюмерів у цій групі читатиме дані з однієї партиції.
14
А ось якщо ми додамо до групи ще одного консьюмера ( c4 ), то він не
буде задіяний в обробці повідомлень взагалі.
15
записалися в нову партію до того, як консьюмери оновили метадані по топіку
і почали читати дані з цієї партиції.
Крім цього, механізм груп дозволяє мати кілька незв'язаних між собою
додатків, що обробляють повідомлення.
16
Консьюмер робить спеціальний запит до брокера, так званий offset-
commit із зазначенням своєї групи, ідентифікатора топік-партиції та, власне,
офсету, який має бути позначений як оброблений. Брокер зберігає цю
інформацію у своєму власному спеціальному топіку. При рестарті консьюмер
запитує сервера останній закоммічений офсет для потрібної топік-партиції, і
просто продовжує читання повідомлень з цієї позиції.
4. Apache ZooKeeper
Висновки
19