Введение в Kafka Consumer Group
Группа потребителей Kafka - это, в основном, несколько потребителей Kafka, которые могут читать данные параллельно из темы Kafka. Kafka Consumer Group обладает следующими свойствами:
- Все потребители в группе имеют один и тот же group.id.
- Каждый раздел в теме читается только одним потребителем.
- Максимальное количество потребителей равно количеству разделов в теме. Если будет больше потребителей, чем разделов, то некоторые потребители останутся без дела.
- Потребитель может читать из более чем одного раздела.
Важность Kafka Consumer Group
Для розничной организации будет большое количество производителей, генерирующих данные с огромной скоростью. Теперь, чтобы прочитать большой объем данных, нам нужно, чтобы несколько потребителей работали параллельно. Сравнительно проще на стороне производителя, где каждый производитель генерирует данные независимо от других. Но на стороне потребителя, если у нас есть несколько читателей, читающих одну и ту же тему, есть большая вероятность, что каждое сообщение будет прочитано более одного раза. Кафка решает эту проблему с помощью Consumer Group. В любом случае, только один потребитель может читать данные из раздела.
Перегородки Kafka Consumer Group
Давайте предположим, что у нас есть тема Кафки и в ней 4 раздела. Тогда у нас могут быть следующие сценарии:
1. Количество потребителей = Количество перегородок
В этом случае каждый потребитель будет читать данные из каждого раздела, и это идеальный случай.
2. Количество потребителей> Количество перегородок
В этом случае один потребитель останется без дела и приведет к плохому использованию ресурса.
3. Количество потребителей <Количество перегородок
В этом случае один из потребителей будет читать данные из более чем одного раздела.
4. Количество групп потребителей> 1
В этом случае тема подписана более чем на одну группу потребителей, которая обслуживает два разных приложения. Эти два приложения могут работать независимо друг от друга.
Преимущества Kafka Consumer Group
Consumer Group добавляет следующие преимущества:
- Масштабируемость: количество потребителей, читающих данные параллельно, определенно увеличивает скорость потребления данных и делает систему способной считывать большие объемы данных.
- Отказоустойчивость. Предположим, у нас был только один Потребитель (для чтения не очень большого объема данных), что произойдет, если Потребитель по какой-то причине потерпит неудачу? Весь трубопровод сломается.
- Балансировка нагрузки: Kafka распределяет разделы справедливо для каждого потребителя, тем самым делая процесс потребления данных гладким и эффективным.
- Перебалансировка: если добавляется новый Потребитель или останавливается существующий, Кафка перебалансирует нагрузку на доступных Потребителей.
Как Кафка соединяет две модели?
Давайте сначала обсудим две модели обмена сообщениями.
1. Очереди сообщений
В этой модели поток сообщений отправляется от одного производителя только одному потребителю. Таким образом, каждое сообщение доступно только для чтения один раз, и как только пользователь извлекает сообщение, сообщение удаляется из очереди. Типичным примером может быть выдача зарплаты, где каждая зарплата должна быть выпущена только один раз. Кроме того, эта модель не гарантирует, что сообщения будут доставлены в порядке. Масштабируемость обработки сообщений ограничена одним доменом.
2. Публикация-подписка сообщений
В этой модели сообщения, опубликованные источником, могут быть подписаны более чем одним потребителем. Производитель и Потребитель в значительной степени разделены. Эта модель гарантирует, что каждый потребитель будет получать сообщения в теме в точном порядке, сгенерированном производителем. Типичным примером может быть телевизионное блюдо, которое публикует различные каналы, такие как музыка, кино, спорт и т. Д., И потребители могут подписаться на более чем один канал. Поскольку в теме несколько подписчиков, масштабирование обработки потоков является сложной задачей.
Кафка настолько популярна, потому что, хотя она основана на модели публикации-подписки, она имеет преимущества системы очереди сообщений. Как обсуждалось ранее, если у нас есть группа потребителей, Kafka гарантирует, что каждое сообщение в теме доступно только один раз для чтения потребителем (что аналогично системе очереди сообщений). Дополнительные преимущества заключаются в том, что сообщения сохраняются посредниками (в течение некоторого времени, что делает их отказоустойчивыми), и если у нас более одной группы потребителей, они могут читать сообщения из одной темы, но обрабатывать их по-разному.
Использование варианта использования
Давайте предположим, что у нас есть простая облачная платформа, где мы разрешаем пользователям следующие операции:
- Храните файлы в облаке.
- Посмотреть их файлы в облаке.
- Загрузите их файлы из Облака.
В начале у нас была очень небольшая база пользователей. Мы хотели получать различную статистику (ежечасно), например, активных пользователей, количество запросов на загрузку, количество запросов на загрузку и так далее. Чтобы удовлетворить требования, мы настроили Kafka Cluster, который создает журналы (генерируемые нашим приложением) в теме, и есть приложение, которое потребляет тему (используя Consumer), а затем обрабатывает его, чтобы сгенерировать необходимую статистику и, наконец, отобразить те, на веб-странице.
Когда людям стали нравиться наши услуги, все больше людей начали использовать их, создавая много журналов в час. Мы обнаружили, что приложение, которое использует тему, стало очень медленным, поскольку мы использовали только одного Потребителя. Чтобы решить эту проблему, мы добавили несколько потребителей в группу и обнаружили значительное улучшение производительности.
Мы столкнулись с другим требованием, когда нам приходилось записывать журналы в кластер HDFS, и этот процесс должен выполняться независимо от предыдущего приложения (это связано с тем, что при дальнейшем увеличении объема данных мы планировали вывести из эксплуатации первое приложение и получить всю статистику в среде HDFS). Чтобы удовлетворить это требование, мы разработали другое приложение, которое подписалось на тему с использованием другой группы потребителей и записало данные в кластер HDFS.
Рекомендуемые статьи
Это руководство для Kafka Consumer Group. Здесь мы обсуждаем важность группы потребителей Kafka и то, как Kafka связывает две модели, а также последствия использования. Вы также можете посмотреть следующие статьи, чтобы узнать больше
- Kafka Applications
- Как установить Кафку?
- Кафка Интервью Вопросы
- Архитектура HDFS
- Различные типы инструментов Кафка