Apache Kafka – кластерная архитектура

Посмотрите на следующую иллюстрацию. На ней показана кластерная диаграмма Кафки.

Кластерная архитектура

В следующей таблице описаны все компоненты, показанные на приведенной выше схеме.

S.NoКомпоненты и описание
1Broker
Кластер Kafka обычно состоит из нескольких брокеров для поддержания баланса нагрузки. Брокеры Kafka не имеют состояния, поэтому они используют ZooKeeper для поддержания своего кластерного состояния. Один экземпляр брокера Kafka может обрабатывать сотни тысяч операций чтения и записи в секунду, а каждый брокер может обрабатывать ТБ сообщений без снижения производительности. Выбор лидера брокера Kafka может быть сделан ZooKeeper.
2ZooKeeper
ZooKeeper используется для управления и координации брокера Kafka. Сервис ZooKeeper в основном используется для уведомления производителя и потребителя о наличии любого нового брокера в системе Kafka или о сбое брокера в системе Kafka. В соответствии с уведомлением, полученным Zookeeper относительно присутствия или отказа брокера, производитель и потребитель принимают решение и начинают согласовывать свою задачу с каким-либо другим брокером.
3Producers
Производители передают данные брокерам. Когда запускается новый брокер, все производители ищут его и автоматически отправляют сообщение этому новому брокеру. Производитель Kafka не ждет подтверждений от брокера и отправляет сообщения так быстро, как может обработать брокер.
4Consumers
Поскольку брокеры Kafka не имеют состояния, это означает, что потребитель должен поддерживать, сколько сообщений было использовано с использованием смещения раздела. Если потребитель подтверждает конкретное смещение сообщения, это означает, что потребитель использовал все предыдущие сообщения. Потребитель отправляет брокеру асинхронный запрос на получение, чтобы подготовить буфер байтов к использованию. Потребители могут перематывать или переходить к любой точке раздела, просто указав значение смещения. Значение смещения потребителя сообщается ZooKeeper.

Leave a Reply

Your email address will not be published. Required fields are marked *