Узнайте о популярной системе сообщений
Эта статья о популярной системе обмена сообщениями, известной как Kafka. Если вы не знаете, что такое Кафка, вы попали в нужное место.
Вам не нужно беспокоиться, если вы знакомы с одним языком программирования, но не знаком с другим, поскольку он не зависит от языка. Мы расскажем об основах, о том, как это работает, и о терминологии компонентов системы.
Что такое Кафка?
Kafka - это система распределенного обмена сообщениями. Он следует шаблону публикации-подписки.
В шаблоне публикации-подписки отправители, известные как издатели, публикуют сообщение в очереди или классе без ведома получателей. Получатели, которые называются подписчиками или потребителями, подписываются на категорию сообщения без ведома отправителя / издателя.
С помощью Kafka мы можем отправлять сообщения между процессами, приложениями, службами и т. Д. В Kafka издатели помещают сообщения в очередь, а потребители слушают сообщения, поддерживая смещение. Смещение обычно является инкрементным. Сообщения хранятся в очереди в течение времени, определенного в конфигурации, поэтому подписчик может сбросить смещение и снова прочитать предыдущие сообщения.
Одна из важных характеристик Kafka - отказоустойчивость. Он поддерживает несколько копий сообщений в очереди в центрах обработки данных.
Компоненты сообщения
На некоторых веб-сайтах сообщение также может называться записью. Сообщение состоит из трех основных частей:
- Отметка времени: это отметка времени сообщения.
- Ключ: необязательный параметр, содержащий информацию о разделе (подробнее об этом мы поговорим в следующем абзаце).
- Значение: это фактическое сообщение, которое нужно передать. Данные представлены в виде байтового массива, поэтому могут содержать любой объект.
Темы и разделы
Сообщения в Kafka можно разделить на несколько категорий, называемых темами. Все сообщения сгруппированы по темам. Издатели отправляют сообщение в одну или несколько тем, а потребители получают сообщения из одной или нескольких тем, из которых они хотят слушать.
Каждая тема дополнительно разделена на разделы . Каждый раздел содержит сообщения в последовательности, которую нельзя изменить. Каждому сообщению внутри раздела назначается и идентифицируется уникальное смещение. Несколько разделов в теме позволяют нескольким потребителям одновременно получать сообщения из одной темы. Производители также могут отправлять в сообщении информацию о разделе, т. Е. О разделе, которому должно быть назначено сообщение.
Потребительские группы
Потребители могут начать читать сообщения с любого смещения, поэтому они могут присоединиться к кластеру Kafka в любое время. Потребители также могут стать частью группы потребителей. Каждый потребитель в группе может читать сообщения из определенного раздела, и Kafka гарантирует, что одно сообщение прочитано только одним потребителем в группе.
Это полезно в случае, если служба, которая должна слушать Kafka, имеет несколько серверов, а также увеличивает производительность, поскольку несколько разделов одной темы читаются параллельно.
Брокеры
брокер Kafka - это синоним сервера Kafka.
Кластер Kafka состоит из одного или нескольких брокеров Kafka. Каждый брокер содержит разделы из одной или нескольких тем.
Сообщения, которые он получает от производителей, хранятся в разделах с назначением смещения. Это позволяет потребителям читать сообщения по смещению и теме.
Работник зоопарка
Хранители зоопарка - один из наиболее важных компонентов, служащий промежуточным звеном между брокерами и потребителями.
Для брокеров он хранит информацию о том, сколько запросов каждый может обработать, и на основе этого направляет запросы к нему. Он также поддерживает статус каждого брокера - то есть, активен он или нет. Наряду с этим, он также поддерживает синхронизацию реплик для каждой темы.
Для потребителей он хранит смещение для каждого потребителя, то есть, сколько сообщений было использовано каждым из них.
Заключение
У Кафки много преимуществ. Он обеспечивает высокую пропускную способность, низкую задержку и отказоустойчивость. Наряду с этим, он также масштабируемый, поскольку добавлять новых брокеров / узлов очень просто. Он также позволяет читать и писать сообщения с высокой степенью параллелизма.
Kafka - очень хороший архитектурный выбор для таких вещей, как микросервисы, где есть много приложений / сервисов, которым необходимо взаимодействовать друг с другом.