Что такое Saamsa и зачем это разработчику Apache Kafka: краткий обзор

Автор Категория ,
Что такое Saamsa и зачем это разработчику Apache Kafka: краткий обзор

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

5 вопросов разработчика и дата-инженера к Apache Kafka

Apache Kafka не случайно считается самым популярным решением для потоковой передачи событий с помощью упрощенной, но мощной и распределенной системы фиксации логов. Компоненты kSQLdb и Connect позволяют анализировать данные, подключаясь к различным источникам в реальном времени. Поэтому Apache Kafka так востребована сегодня в мире Big Data как самостоятельный продукт и основа для разработки множества подобных решений класс Event Streaming, о которых мы недавно рассказывали здесь и здесь.

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

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

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

Что такое Saamsa и как это работает

Saamsa (не путать с Apache Samza) – это легковесное десктопное и веб-приложение с открытым исходным кодом от сотрудников LinkedIn для работы с Kafka, которое:

  • отображает нагрузку потребителей и продюсеров на отдельного брокера;
  • позволяет разработчику видеть, какой потребитель какие данные потребляет, к каким группам они принадлежат и нужно ли исправить каких-либо потребителей по причине их простоя или устаревания;
  • показывает, как данные хранятся по топикам, и что приводит к дисбалансу сообщений в отдельных разделах, если скорость передачи данных вызывает проблемы с обработкой пакетов;
  • дает возможность разработчику заглянуть внутрь «черного ящика» Kafka и получить закулисную реализацию системы, чтобы оценить, все ли работает так, как ожидалось;
  • визуализирует балансировку нагрузки на брокерах Kafka и позволяет при необходимости настраивать ее.

Таким образом, первая часть Saamsa – это наглядный графический интерфейс, который отображает нагрузку потребителей и продюсеров на отдельного брокера на уровне топика. Второй аспект Saamsa – это не просто визуализация обработки и хранения данных в Kafka. Здесь же обеспечивается однократная репликация с одноразовыми записанными фиксациями (commit) и непрерывная балансировка нагрузки в реальном времени по одному топику на одном и том же брокере. Это обеспечивает целостность данных и эффективные операции чтения/записи для максимальной производительности. Причем все это реализуется одним кликом, делая работу с Kafka максимально удобной для разработчиков и дата-инженеров. Эти функциональные возможности достигаются за счет специальной реализации API Kafka Streams, которая прикрепляется к конкретному топику. Так данные реплицируются в режиме реального времени с помощью независимого потребителя и продюсера в топик, обеспечивая отсутствие помех для других приложений Kafka.

Таким образом, некоторые идеи Saamsa похожи на FlowKat и Monokl – средства мониторинга за кластером Apache Kafka на базе KafkaJS, о которых мы писали здесь. Однако, интерфейс и функциональные возможности Saamsa намного проще, чем FlowKat и Monokl.

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

  • войти в приложение (авторизация для зарегистрированных пользователей и регистрация для новых)
  • добавить новый URL-адрес брокера в поле ввода или использовать ранее заданные;
  • выбрать топик, который необходимо просмотреть.

После этого Saamsa отобразит визуализацию заданного топика на выбранном брокере Kafka. Чтобы настроить балансировку нагрузки Apache Kafka с помощью Saamsa, следует сперва выбрать брокера и топик. После нажатия кнопки Balance Load on Topic, предложенный вариант балансировки нагрузки для исходного топика отобразится с добавлением «_balanced» к исходному имени, например, «topic_balanced».

Узнайте больше про администрирование и эксплуатацию Apache Kafka для разработки распределенных приложений потоковой аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://medium.com/@saamsa.grp/how-to-load-balance-in-kafka-811a46ff178
  2. https://github.com/oslabs-beta/saamsa
  3. http://saamsa.io/