Что выбрать Python-разработчику для работы с Kafka: confluent-kafka vs kafka-python

Kafka курсы примеры обучение, Kafka для разработчика, Kafka Python, Kafka примеры курсы обучение дата-инженеров, Школа Больших Данных Учебный Центр Коммерсант

Почему производительность confluent-kafka выше, чем у kafka-python, чем еще отличаются эти Python-библиотеки для разработки клиентов Apache Kafka, и что выбирать.

Сравнение Python-библиотек для разработки клиентов Kafka

Хотя Java считается более подходящей для создания высоконагруженных приложений, многие разработчики используют Python, который намного проще. Этот язык программирования подходит даже для написания продюсеров и потребителей Apache Kafka. Но в этом случае перед разработчиком встает выбор: какую библиотеку использовать. Например, раньше я обычно пользовалась библиотекой kafka-python. Однако, у нее есть альтернатива — confluent-kafka. Эти библиотеки в целом очень похожи по назначению и набору возможностей, но отличаются некоторыми деталями.

Библиотека confluent-kafka представляет собой Python-клиент Confluent для Apache Kafka, который предоставляет высокоуровневый Producer, Consumer и AdminClient, совместимый со всеми версия платформы потоковой передачи событий выше v0.8, Confluent Cloud и Confluent Platform. Этот клиент отличается высокой надежностью, поскольку является оболочкой вокруг библиотеки librdkafka, которая широко развернута в разнообразном наборе производственных сценариев. В свою очередь, librdkafka — это реализация библиотеки на языке C протокола Apache Kafka, предоставляющая клиентов Producer, Consumer и Admin. Она позволяет публиковать свыше 1 миллиона сообщений в секунду и потреблять 3 миллиона сообщений в секунду. Будучи основанной на librdkafka, библиотека confluent-kafka также обеспечивает высокую производительность: ее максимальная пропускная способность и задержка соответствует клиенту Java, накладные расходы интерпретатора Python не оказывают существенного влияния. А поскольку confluent-kafka выпускается командой Confluent, основанной создателями самой Apache Kafka, ее клиентские функции потоковой платформы и компонентам Confluent.

В свою очередь, kafka-python – это чистый Python-клиент для Apache Kafka, разработанный так, чтобы работать подобно официальному клиенту Java, с добавлением некоторых интерфейсов Python (например, итераторов-потребителей). Однако, kafka-python лучше всего использовать с новыми брокерами свыше версии 0.9, хотя библиотека поддерживает обратную совместимость со старыми версиями до 0.8.0. Тем не менее, некоторые функции поддерживаются только на новых брокерах. Например, полностью координированные группы потребителей, т. е. динамическое назначение разделов нескольким потребителям в одной группе, требуют Apache Kafka 0.9. Поддержка этой функции для более ранних выпусков брокеров потребует написания и поддержки пользовательского кода выбора лидера и членства в группе, а также проверки работоспособности потребителей. Для старых версий платформы потоковой передачи событий можно реализовать это самостоятельно, вручную назначая разные разделы каждому экземпляру потребителя с помощью DevOps-инструментов управления конфигурацией, таких как chef, ansible и пр. Этот подход будет работать нормально, хотя изначально он не поддерживает повторную балансировку потребителей при сбоях.

Таким образом, можно сравнить confluent-kafka и kafka-python по следующим критериям:

  • происхождение;
  • производительность;
  • поддерживаемые функции;
  • совместимость с Apache K

Сделаем сравнение в табличном виде.

Критерий confluent-kafka kafka-python Вывод
Происхождение От компании Confluent, основанной создателями Apache Kafka От сообщества Библиотека confluent-kafka имеет более полную документацию и поддержку со стороны Confluent, чем kafka-python
Производительность Очень высокая производительность благодаря базовой реализации на основе C-библиотеки librdkafka Средняя производительность из-за накладных расходов трансляции Python-кода в Java Если нужна высокая производительность, лучше выбирать confluent-kafka
Поддерживаемые функции предлагает полный набор API и функций, включая поддержку транзакций, сериализацию Apache Avro и сжатие сообщений, предоставляет более явный асинхронный API с использованием обратных вызовов и библиотеки librdkafka, что позволяет лучше контролировать поток обработки сообщений включает большинство основных функций, но по умолчанию не поддерживает сериализацию Apache Avro, поддерживает асинхронные операции с использованием Python-библиотеки asyncio Функциональные возможности confluent-kafka шире, чем у kafka-python
Совместимость с Apache Kafka обеспечивает раннюю поддержку новых версий Kafka, гарантируя совместимость с последними функциями и улучшениями Может отставать от последних версий платформы Если нужны самые последние новинки Apache Kafka, confluent-kafka их поддерживает, что не гарантирует kafka-python

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

Источники

  1. https://github.com/confluentinc/confluent-kafka-python
  2. https://kafka-python.readthedocs.io/en/master/
  3. https://github.com/confluentinc/librdkafka
  4. https://stackshare.io/stackups/pypi-confluent-kafka-vs-pypi-kafka-python
Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.
Поиск по сайту