Узнайте о популярной системе сообщений

Эта статья о популярной системе обмена сообщениями, известной как Kafka. Если вы не знаете, что такое Кафка, вы попали в нужное место.

Вам не нужно беспокоиться, если вы знакомы с одним языком программирования, но не знаком с другим, поскольку он не зависит от языка. Мы расскажем об основах, о том, как это работает, и о терминологии компонентов системы.

Что такое Кафка?

Kafka - это система распределенного обмена сообщениями. Он следует шаблону публикации-подписки.

В шаблоне публикации-подписки отправители, известные как издатели, публикуют сообщение в очереди или классе без ведома получателей. Получатели, которые называются подписчиками или потребителями, подписываются на категорию сообщения без ведома отправителя / издателя.

С помощью Kafka мы можем отправлять сообщения между процессами, приложениями, службами и т. Д. В Kafka издатели помещают сообщения в очередь, а потребители слушают сообщения, поддерживая смещение. Смещение обычно является инкрементным. Сообщения хранятся в очереди в течение времени, определенного в конфигурации, поэтому подписчик может сбросить смещение и снова прочитать предыдущие сообщения.

Одна из важных характеристик Kafka - отказоустойчивость. Он поддерживает несколько копий сообщений в очереди в центрах обработки данных.

Компоненты сообщения

На некоторых веб-сайтах сообщение также может называться записью. Сообщение состоит из трех основных частей:

  1. Отметка времени: это отметка времени сообщения.
  2. Ключ: необязательный параметр, содержащий информацию о разделе (подробнее об этом мы поговорим в следующем абзаце).
  3. Значение: это фактическое сообщение, которое нужно передать. Данные представлены в виде байтового массива, поэтому могут содержать любой объект.

Темы и разделы

Сообщения в Kafka можно разделить на несколько категорий, называемых темами. Все сообщения сгруппированы по темам. Издатели отправляют сообщение в одну или несколько тем, а потребители получают сообщения из одной или нескольких тем, из которых они хотят слушать.

Каждая тема дополнительно разделена на разделы . Каждый раздел содержит сообщения в последовательности, которую нельзя изменить. Каждому сообщению внутри раздела назначается и идентифицируется уникальное смещение. Несколько разделов в теме позволяют нескольким потребителям одновременно получать сообщения из одной темы. Производители также могут отправлять в сообщении информацию о разделе, т. Е. О разделе, которому должно быть назначено сообщение.

Потребительские группы

Потребители могут начать читать сообщения с любого смещения, поэтому они могут присоединиться к кластеру Kafka в любое время. Потребители также могут стать частью группы потребителей. Каждый потребитель в группе может читать сообщения из определенного раздела, и Kafka гарантирует, что одно сообщение прочитано только одним потребителем в группе.

Это полезно в случае, если служба, которая должна слушать Kafka, имеет несколько серверов, а также увеличивает производительность, поскольку несколько разделов одной темы читаются параллельно.

Брокеры

брокер Kafka - это синоним сервера Kafka.

Кластер Kafka состоит из одного или нескольких брокеров Kafka. Каждый брокер содержит разделы из одной или нескольких тем.

Сообщения, которые он получает от производителей, хранятся в разделах с назначением смещения. Это позволяет потребителям читать сообщения по смещению и теме.

Работник зоопарка

Хранители зоопарка - один из наиболее важных компонентов, служащий промежуточным звеном между брокерами и потребителями.

Для брокеров он хранит информацию о том, сколько запросов каждый может обработать, и на основе этого направляет запросы к нему. Он также поддерживает статус каждого брокера - то есть, активен он или нет. Наряду с этим, он также поддерживает синхронизацию реплик для каждой темы.

Для потребителей он хранит смещение для каждого потребителя, то есть, сколько сообщений было использовано каждым из них.

Заключение

У Кафки много преимуществ. Он обеспечивает высокую пропускную способность, низкую задержку и отказоустойчивость. Наряду с этим, он также масштабируемый, поскольку добавлять новых брокеров / узлов очень просто. Он также позволяет читать и писать сообщения с высокой степенью параллелизма.

Kafka - очень хороший архитектурный выбор для таких вещей, как микросервисы, где есть много приложений / сервисов, которым необходимо взаимодействовать друг с другом.