Вступ до групи споживачів Kafka
Група споживачів Kafka - це в основному кількість споживачів Kafka, які можуть читати дані паралельно з теми Kafka. Група споживачів Kafka має такі властивості:
- Усі споживачі в групі мають одну групу.id.
- Кожен розділ у темі читає лише один споживач.
- Максимальна кількість споживачів дорівнює кількості розділів у темі. Якщо споживачів більше, ніж перегородок, то деякі споживачі залишаться бездіяльними.
- Споживач може читати з декількох розділів.
Важливість групи споживачів Kafka
Для роздрібної організації буде велика кількість виробників, які генерують дані з величезною швидкістю. Тепер для того, щоб прочитати великий обсяг даних, нам потрібні кілька споживачів, які працюють паралельно. Порівняно простіше на стороні виробника, коли кожен виробник генерує дані незалежно від інших. Але, зі сторони споживача, якщо у нас є кілька читачів з однієї теми, є велика ймовірність, що кожне повідомлення буде прочитане не один раз. Кафка вирішує цю проблему за допомогою Consumer Group. У будь-якому випадку лише одному споживачеві дозволено читати дані з розділу.
Перегородки групи споживачів Kafka
Припустимо, що у нас є тема Кафки, і в ній є 4 розділи. Тоді ми можемо мати такі сценарії:
1. Кількість споживачів = Кількість перегородок
У цьому випадку кожен Споживач буде читати дані з кожного розділу, і це ідеальний випадок.
2. Кількість споживачів> Кількість перегородок
У цьому випадку один споживач залишиться бездіяльним і призведе до поганого використання ресурсу.
3. Кількість споживачів <Кількість перегородок
У цьому випадку один із споживачів прочитає дані з більш ніж одного розділу.
4. Кількість групи споживачів> 1
У цьому випадку тему підписано більш ніж однією групою споживачів, яка обслуговує дві різні програми. Ці два програми можуть працювати незалежно один від одного.
Переваги групи споживачів Kafka
Consumer Group додає такі переваги:
- Масштабованість: Деякі споживачі, які читають дані паралельно, безумовно збільшують швидкість споживання даних і роблять систему здатною читати великий обсяг даних.
- Толерантність помилок: Припустимо, у нас був лише один споживач (для читання не настільки великого обсягу даних), що буде, якщо споживач з якоїсь причини вийде з ладу? Весь трубопровід зламається.
- Балансування завантаження: Kafka справедливо розподіляє розділи для кожного споживача, тим самим робить процес споживання даних плавним та ефективним.
- Повторне врівноваження: Якщо додається новий споживач або припиняється існуючий, Kafka відновлює навантаження на доступних споживачів.
Як Кафка мостить дві моделі?
Давайте обговоримо спочатку дві моделі обміну повідомленнями.
1. Черги на повідомлення
У цій моделі потік повідомлень надсилається від одного виробника лише одному споживачеві. Таким чином, кожне повідомлення читається лише один раз, і коли споживач перетягує повідомлення, це повідомлення стирається з черги. Типовим прикладом може бути видача зарплати, коли кожна зарплата повинна бути видана лише один раз. Також ця модель не забезпечує доставку повідомлень в порядку. Масштабованість обробки повідомлень обмежена одним доменом.
2. Опублікувати-Підписатися на повідомлення
У цій моделі повідомлення, опубліковані Виробником, можуть підписатись більше ніж одним Споживачем. Виробник та Споживач значною мірою виокремлюються. Ця модель гарантує, що кожен споживач отримуватиме повідомлення в темі в точному порядку, створеному виробником. Типовим прикладом може бути телевізор, який публікує різні канали, такі як музика, фільми, спорт тощо, і споживачі можуть підписатися на більш ніж один канал. Оскільки є кілька підписників на тему, масштабування обробки потоків є проблемою.
Kafka настільки популярна, тому що вона базується на моделі публікації-підписки, але вона має переваги системи черги повідомлень. Як було сказано раніше, якщо у нас є група споживачів, Kafka забезпечує, що кожне повідомлення в темі споживачем читається лише один раз (що схоже на систему черги повідомлень). Додаткові переваги полягають у тому, що повідомлення зберігаються брокерами (деякий час тим самим роблячи його стійкі до помилок), і якщо у нас є більше однієї групи споживачів, вони можуть читати повідомлення з тієї ж теми, але обробляти їх по-різному.
Використовуйте випадкові випадки
Припустимо, що у нас є проста хмарна платформа, де ми дозволяємо користувачам виконувати такі операції:
- Зберігайте файли в Cloud.
- Переглядайте їхні файли у Хмарі.
- Завантажте їх файли з Хмари.
На початку у нас була дуже мала база користувачів. Ми хотіли отримувати різні статистичні дані (щогодини), такі як активні користувачі, кількість запитів на завантаження, кількість запитів на завантаження тощо. Для задоволення вимог ми створили кластер Kafka, який створює журнали (згенеровані нашою програмою) у тему, і є додаток, який споживає цю тему (використовуючи споживача), а потім обробляє її, щоб створити необхідну статистику та нарешті відобразити ті на веб-сторінці.
Коли люди почали сподобатися нашим послугам, більше людей почали користуватися ним, таким чином генеруючи багато журналів на годину. Ми з'ясували, що програма, яка споживає цю тему, стала надзвичайно повільною, оскільки ми використовували лише одного споживача. Щоб вирішити проблему, ми додали в групу деяких споживачів та виявили суттєве покращення в роботі.
Ми зіткнулися з іншою вимогою, коли нам довелося записувати журнали в кластер HDFS, і цей процес повинен запускатися незалежно від попередньої програми (Це тому, що з подальшим збільшенням даних ми планували вивести з експлуатації перший додаток і отримувати всі статистичні дані в середовищі HDFS). Щоб виконати цю вимогу, ми розробили ще одну програму, яка підписалася на цю тему за допомогою іншої групи споживачів і записала дані в кластер HDFS.
Рекомендовані статті
Це посібник для групи споживачів Kafka. Тут ми обговорюємо важливість групи споживачів Kafka та те, як Kafka з'єднує дві моделі разом із наслідками її використання. Ви також можете переглянути наступні статті, щоб дізнатися більше -
- Кафка програми
- Як встановити Kafka?
- Кафка Інтерв'ю Питання
- HDFS Архітектура
- Різні типи інструментів Kafka