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

Что такое Apache Kafka?

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

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

Для получения более подробной информации о том, как работает Kafka под капотом, ознакомьтесь с нашим дополнением внизу этой статьи.

Что такое Гиперион?

Что, если во время работы вашего приложения Kafka один или несколько ваших брокеров перестанут работать, что приведет к недостаточной репликации ваших разделов? Что, если в результате ошибки Zookeeper не будет «контроллера» или ведущего брокера? Компании и разработчики должны активно следить за состоянием своих развертываний Kafka, чтобы обеспечить оптимальную производительность и устранить только эти типы проблем.

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

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

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

Hyperion фильтрует множество потенциальных показателей Kafka, чтобы информировать разработчиков в режиме реального времени о наиболее важных показателях их кластера Kafka:

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

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

Поддержите наш проект:

Мы планируем запускать новые продукты, продолжая улучшать Hyperion.

Если вы хотите поддержать команду Hyperion, пожалуйста:

  • Форкнуть и пометить наш продукт на GitHub
  • Загляните на наш сайт
  • Следите за нами в LinkedIn
  • Поделитесь этим проектом со своей сетью
  • Похлопайте этой статье

Начало работы с Hyperion:

  1. Клонируйте Repo на свой локальный компьютер
  2. Установите зависимости, набрав «npm install», а затем запустите приложение, набрав «npm run start».
  3. Убедитесь, что у вас есть запущенный экземпляр Kafka, подключенный к Prometheus.
  4. Затем вам просто нужно войти в систему и подключиться к порту и домену запущенного экземпляра Prometheus.
  5. Обратитесь к ReadMe для получения более подробных инструкций.

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

Что будет дальше:

  • Больше настройки дополнительных метрик
  • Метрики специально для производителей и потребителей
  • Развертывание на AWS и на рабочем столе через электронный JS
  • Отправка предупреждений на электронную почту разработчиков, когда их кластер неработоспособен.

Свяжитесь с нашей командой разработчиков!

Анита Дуонг | ЛинкедИн | Гитхаб

Аниш Патель | ЛинкедИн | Гитхаб

Джоуи Фридман | ЛинкедИн | Гитхаб

Кристин Грин | ЛинкедИн | Гитхаб

Дополнение

Kafka позволяет производителям и потребителям напрямую подключаться к кластеру Kafka, а не связываться друг с другом. Kafka использует концепции потоковой передачи Pubsub: производители пишут события брокеру Kafka с темами, а потребители читают сообщения из тем, на которые они подписаны, от брокера Kafka. Роль брокера состоит в том, чтобы просто получать сообщения от производителей и позволять потребителям прослушивать сообщения по темам, на которые они подписаны. Брокеры разбивают журналы сообщений и распределяют их между несколькими узлами в кластере Kafka. Кластеры Kafka обычно состоят из трех-пяти брокеров, один из которых назначается «лидером» Zookeeper. Ведущий узел отвечает за размещение и репликацию данных между «разделами» брокеров, чтобы обеспечить безопасность и точность данных. В будущем команда Kafka планирует отказаться от использования Zookeeper и использовать свой собственный инструмент Kraft для замены Zookeeper, но на данный момент разработчикам важно хорошо понимать Zookeeper и архитектуру системы Kafka, чтобы оптимизировать их использование. мощная технология потоковой передачи.