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

В моей предыдущей статье про симулятор одного из самых популярных брокеров сообщений — RabbitMQ много читателей оставляли в личку разные вопросы, но одним из самых популярных и часто задаваемых стал: "Очень классный и удобный симулятор! А есть ли такой же для Kafka?" И тут я понял: действительно, несправедливо рассказывать и, так сказать, нести в массы симулятор одного типа брокеров, но совершенно забыть про другой. Ну что ж, Кафка, значит, Кафка!

На просторах всемирной паутины стопроцентного аналога-конструктора, такого как RabbitMQ Simulator, к сожалению, я не нашел. Но мы же знаем, что этой статьи не было бы, если бы я не нашел что-то интересное.

И сегодня это будет Kafka Visualization от компании SoftwareMill.


Рисунок 1. Логотип Kafka Visualization
Рисунок 1. Логотип Kafka Visualization

Kafka Visualization – это мощный и интерактивный симулятор брокера сообщений на базе Apache Kafka, разработанный компанией SoftwareMill, который помогает разработчикам и администраторам лучше понимать работу распределенных систем обмена сообщениями, моделировать собственные структуры обмена данными, визуализировать и тестировать работу своих гипотез.

Для начала, как всегда, немного теории об Apache Kafka.

Apache Kafka — это высокопроизводительная система обмена сообщениями с поддержкой публикации-подписки (pub-sub), изначально созданная компанией LinkedIn. Она предназначена для обработки больших объемов данных в реальном времени и часто используется в системах потоковой аналитики, логирования и интеграции приложений.

Основные компоненты Kafka:

Топик (Topic) — основной объект хранения данных. Сообщения публикуются в топики, где они сохраняются и могут быть прочитаны подписчиками.

Брокер (Broker) — сервер, на котором хранятся данные. Брокеры объединяются в кластер, что позволяет масштабироваться горизонтально.

Продюсер (Producer) — приложение, которое отправляет сообщения в топик.

Потребитель (Consumer) — приложение, которое читает сообщения из топика.

Партиции (Partitions) — части, на которые могут быть разделены топики для распределения нагрузки и повышения производительности.

Репликация (Replication) — механизм обеспечения отказоустойчивости за счет создания копий данных на разных брокерах.

Контроллер (Controller) — специальный брокер, отвечающий за координацию работы кластера.

Офсет, или смещение (Offset) — указатель позиции сообщения в теме, используемый потребителями для отслеживания прогресса чтения.

Принципы работы Kafka:

Распределенная архитектура.

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

Журналирование сообщений.

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

Масштабируемость.

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

Гарантия доставки.

Kafka гарантирует доставку сообщений. Существует несколько типов доставки: "at most once" («не более одного раза»), "at least once" (как минимум один раз) и "exactly once" (ровно один раз).

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

Перейдем непосредственно к интерфейсу нашего Kafka Visualization.

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

Большую часть экрана занимает основная панель, на которой находятся визуальные элементы, представляющие компоненты кластера Kafka:

- Producer - продюсер,

- Brokers - брокеры,

- Partitions - партиции,

- Consumers - потребители.

Это позволяет пользователям быстро понять текущее состояние системы.

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

Рисунок 2. Основной интерфейс Kafka Visualization
Рисунок 2. Основной интерфейс Kafka Visualization

Ниже под продюсером мы видим ряд брокеров. Очень хорошо визуализируется разделение каждого брокера на партиции (Leader partition и Replica partition). Дефолтно Kafka Visualization при заходе на страницу выставляет два брокера с одним leader partition и одним replica partition в каждом.

По цветовой схеме определено, что Leader partition выделяется более ярким, насыщенным цветом.


Рисунок 3. Leader partition в брокере
Рисунок 3. Leader partition в брокере

В свою очередь Replica partition отмечен более тусклым цветом.

Рисунок 4. Replica partition в брокере
Рисунок 4. Replica partition в брокере

Здесь хотелось бы отметить очень удобную функцию — кнопку "power", т.е. любой брокер можно включить/выключить по усмотрению.

Под брокерами мы наблюдаем потребителя, который готов к приему сообщений. Важно заметить, что функционал Kafka Visualization позволяет разделять потребителей на группы. В текущей версии существуют группы от A до E (английского алфавита соответственно).

В верхнем правом углу видна панель управления работой. Есть возможность регулировать скорость анимации, т.е. длительность одного тика в секундах — "Animation Speed" (5s, 4s, 3s, 2s, 1s). Кнопка "Pause/Resume" либо ставит процесс на паузу, либо возобновляет работу. Кнопка "Restart" сбрасывает все потоки и полученные сообщения и обновляет весь процесс.

В боковой панели, расположенной слева от основного окна, располагается панель настроек. Здесь можно увидеть следующие элементы для изменений (в порядке сверху вниз):

- Partitions - настройка количества партиций. В текущей версии можно настроить от 1 до 5 партиций.

- Brokers - настройка количества брокеров. В текущей версии можно настроить от 1 до 5 брокеров.

- Replication factor - настройка фактора репликации. В текущей версии можно так же настроить от 1 до 5.

Настройки продюсера:

- Producing interval — интервал в тиках, с которым будет отправляться сообщение.

Настройки потребителя (важно отметить, что функционал обеспечивает настройку каждого потребителя отдельно):

- Consume interval — интервал в тиках, с которым будет приниматься сообщение. Поле обязательно для заполнения и не может быть пустым. При пустом значении будет выдаваться текст ошибки: "Consumer speed required"

- Commit offset interval — количество сообщений, через которое будет сохраняться офсет. Поле так же обязательное для заполнения и не может быть пустым. При пустом значении будет выдаваться текст ошибки: "Offset committing interval required"

- Consumer group - группа, к которой относится конкретный потребитель.

Ниже располагается кнопка "Add Consumer" для добавления нового потребителя.

Еще ниже кнопка "Apply Setup" для вступления в силу новых изменений.


Рисунок 5. Панель управления Kafka Visualization
Рисунок 5. Панель управления Kafka Visualization

Теперь предлагаю перейти к практическому примеру и смоделировать собственную структуру в рамках Kafka Visualization.

В нашем кейсе будет 1 продюсер, при этом создадим 3 брокера, сделаем по 3 партиции, установим фактор репликации так же 3.

Стоит заметить очень интересную деталь: сервис не даст нам установить в текущем варианте фактор репликации 4 или более и напишет текст ошибки - "Replication factor cannot be larger than brokers", т.е. фактор репликации не может быть больше, чем количество брокеров.

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


Рисунок 6. Текст ошибки
Рисунок 6. Текст ошибки

Так же к текущей модели мы создадим 2 потребителя: одному установим настройки Consume interval 1, Commit offset interval 1, Consumer group А; другому установим настройки Consume interval 2, Commit offset interval 2, Consumer group B.

После завершения всех настроек нажимаем кнопку "Apply Setup".

Теперь мы видим, что на основной панели произошли изменения согласно нашим настройкам. Установим "Animation Speed" 2s и нажмем кнопку "Resume" для запуска процесса.

После запуска можно наблюдать в реальном времени движение данных, интервалы времени, распределение по разным партициям и т.д.

Очень наглядно демонстрируется цветовая дифференцировка сообщений: каждому топику в кластере присваивается своя цветовая метка и размер в зависимости от количества сообщений в партициях. Можно так же заметить, что самое яркое цветовое выделение происходит только в "leader partition".

Рисунок 7. Пример текущей конструкции
Рисунок 7. Пример текущей конструкции

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

И снова интересный факт: можно заметить, как в одном из двух оставшихся работать брокеров (на нашей картинке это последний) вместо одного "leader partition" теперь стало два (один зеленого цвета, другой голубого — под цифрами 1 и 3 соответственно).

Рисунок 8. Один выключенный брокер
Рисунок 8. Один выключенный брокер

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

Подводя итог по Kafka Visualization, я бы отметил в нем несколько основных преимуществ.

Простота использования

Интерфейс Kafka Visualization интуитивно понятен и удобен даже для пользователей без глубокого технического опыта работы с Kafka.

Визуализация потоков данных

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

Настраиваемость

Пользовательские настройки позволяют адаптировать интерфейс и функционал под конкретные задачи и требования проекта.

Реальное время

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

Демонстративность

Kafka Visualization имитирует работу настоящего кластера Kafka, позволяя пользователям тестировать различные сценарии и конфигурации без необходимости развертывания реальной инфраструктуры. Это превосходно подходит как для обсуждения с коллегами во время проектирования, так и для обучения специалистов принципам работы Apache Kafka.

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

Ссылки на официальные источники:

Комментарии (0)