Архитектура
Alauda Streaming Service for Kafka использует распределённую архитектуру Kafka для обеспечения проверенного решения с высокой доступностью, отвечающего требованиям предприятий по высокопроизводительным, надёжным и эластично масштабируемым системам очередей сообщений.
Режим координации ZooKeeper
Режим координации ZooKeeper — это традиционная реализация распределённой координации для Kafka, использующая кластер ZooKeeper для управления метаданными кластера Kafka, регистрации брокеров и выбора контроллера, а также других ключевых функций. Этот режим обладает следующими характеристиками:
- Зрелость и стабильность: Проверен в масштабных производственных средах, обладает чрезвычайно высокой надёжностью.
- Разделение ответственности: ZooKeeper сосредоточен на координации кластера, в то время как брокеры Kafka — на обработке сообщений.
- Автоматический failover: Автоматический выбор контроллера достигается с помощью механизма watcher в ZooKeeper.
- Управление метаданными: Хранит ключевые метаданные, такие как информация о разделах топиков и смещения потребителей.
- Зависимость при масштабировании: Требует дополнительного обслуживания кластера ZooKeeper, что увеличивает операционную сложность.

Режим KRaft
Режим KRaft — это система управления метаданными следующего поколения в Kafka, которая заменяет ZooKeeper собственным протоколом консенсуса на базе Raft. Этот режим обладает следующими характеристиками:
- Упрощённая архитектура: Устраняет внешнюю зависимость от ZooKeeper, снижая операционную сложность.
- Повышенная масштабируемость: Поддерживает значительно большее количество разделов (до миллионов, по сравнению с сотнями тысяч в режиме ZooKeeper).
- Быстрый failover контроллера: Обеспечивает переключение менее чем за секунду, что значительно лучше многосекундной задержки failover в ZooKeeper.
- Более сильная согласованность: Гарантирует линейную согласованность операций с метаданными, обеспечивая более строгие гарантии, чем eventual consistency метаданных на базе ZooKeeper.
- Гибкие варианты развертывания: Поддерживает как комбинированный режим (единые процессы, выполняющие функции брокеров и контроллеров, подходящий для небольших кластеров), так и выделенный режим (отдельные процессы контроллера и брокера, оптимальный для крупномасштабных развертываний).
