Apache Kafka приобрела значительную популярность как распределенная платформа потоковой передачи для создания конвейеров данных в реальном времени и приложений потоковой передачи. Традиционно Kafka полагалась на Apache ZooKeeper для управления метаданными и поддержания состояния кластера. Однако благодаря недавним достижениям теперь можно использовать Kafka без ZooKeeper. В этой статье мы рассмотрим альтернативные методы и предоставим примеры кода, чтобы продемонстрировать, как можно использовать Kafka без необходимости использования ZooKeeper.
Методы использования Kafka без ZooKeeper:
- Kafka с функцией внутренних метаданных:
Начиная с версии 2.8, Kafka представила функцию внутренних метаданных, которая устраняет зависимость от ZooKeeper. Чтобы включить эту функцию, вам необходимо установить для свойства конфигурации брокераKAFKA_BROKER_API_VERSIONSзначение"2.8". Этот метод позволяет брокерам Kafka управлять своими собственными метаданными, устраняя необходимость в отдельном ансамбле ZooKeeper.
Пример:
# Kafka Broker Configuration
KAFKA_BROKER_API_VERSIONS=2.8
- Использование оператора Kubernetes для Kafka.
Если вы используете Kafka в Kubernetes, вы можете использовать оператор Kafka, который является собственным решением Kubernetes для управления кластерами Kafka. Оператор выполняет все необходимые операции, включая управление метаданными, переназначение разделов и настройки тем, без необходимости использования ZooKeeper.
Пример:
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-kafka-cluster
spec:
# Kafka cluster configuration
# ...
- Самобалансирующиеся кластеры платформы Confluent:
Платформа Confluent предлагает коммерческую функцию под названием «Самобалансирующиеся кластеры», которая позволяет Kafka работать без ZooKeeper. Благодаря самобалансировке брокеры Kafka работают вместе, распределяя разделы и поддерживая состояние кластера, устраняя зависимость от ZooKeeper.
Пример:
# Kafka Broker Configuration
confluent.metadata.self.balancing.enabled=true
- Совместимость 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, что упростит вашу инфраструктуру и уменьшит операционные сложности.