Изучение Kafka без Zookeeper: альтернативные методы оптимизации обработки данных

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

Методы использования Kafka без ZooKeeper:

  1. Kafka с функцией внутренних метаданных:
    Начиная с версии 2.8, Kafka представила функцию внутренних метаданных, которая устраняет зависимость от ZooKeeper. Чтобы включить эту функцию, вам необходимо установить для свойства конфигурации брокера KAFKA_BROKER_API_VERSIONSзначение "2.8". Этот метод позволяет брокерам Kafka управлять своими собственными метаданными, устраняя необходимость в отдельном ансамбле ZooKeeper.

Пример:

# Kafka Broker Configuration
KAFKA_BROKER_API_VERSIONS=2.8
  1. Использование оператора Kubernetes для Kafka.
    Если вы используете Kafka в Kubernetes, вы можете использовать оператор Kafka, который является собственным решением Kubernetes для управления кластерами Kafka. Оператор выполняет все необходимые операции, включая управление метаданными, переназначение разделов и настройки тем, без необходимости использования ZooKeeper.

Пример:

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-kafka-cluster
spec:
  # Kafka cluster configuration
  # ...
  1. Самобалансирующиеся кластеры платформы Confluent:
    Платформа Confluent предлагает коммерческую функцию под названием «Самобалансирующиеся кластеры», которая позволяет Kafka работать без ZooKeeper. Благодаря самобалансировке брокеры Kafka работают вместе, распределяя разделы и поддерживая состояние кластера, устраняя зависимость от ZooKeeper.

Пример:

# Kafka Broker Configuration
confluent.metadata.self.balancing.enabled=true
  1. Совместимость API Kafka API Apache Pulsar.
    Apache Pulsar, мощная распределенная платформа обмена сообщениями между издательствами и подписками, обеспечивает уровень совместимости API Kafka. Вы можете перенести свои приложения Kafka в Pulsar, не меняя клиентский код Kafka, а Pulsar самостоятельно управляет метаданными, устраняя необходимость в ZooKeeper.

Пример:

// Pulsar Kafka Consumer
Properties properties = new Properties();
properties.put("bootstrap.servers", "pulsar://localhost:6650");
properties.put("group.id", "my-group");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(properties);

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