Что такое Apache Pulsar?
Apache Pulsar — это распределенная система обмена сообщениями и потоковая платформа с открытым исходным кодом, разработанная Yahoo (теперь Verizon Media). Pulsar предназначен для обработки больших объемов данных в реальном времени с поддержкой multi-tenancy, geo-репликации и различных паттернов обмена сообщениями.
Основные возможности Apache Pulsar
- Multi-tenancy — поддержка множественных арендаторов из коробки
- Geo-репликация — синхронизация данных между географически распределенными кластерами
- Низкая задержка — обработка сообщений с минимальными задержками
- Высокая пропускная способность — миллионы сообщений в секунду
- Durable storage — надежное хранение сообщений в Apache BookKeeper
- Schema registry — встроенная поддержка схем данных
Архитектура Apache Pulsar
Pulsar имеет многоуровневую архитектуру:
- Broker layer — обработка pub/sub операций
- BookKeeper — распределенное хранилище логов
- ZooKeeper — координация и метаданные кластера
- Proxy layer — балансировка нагрузки и маршрутизация
Установка Apache Pulsar
Установка через Docker Compose:
Установка Python клиента:
Основные концепции
Ключевые концепции Apache Pulsar:
- Topic — именованный канал для передачи сообщений
- Namespace — логическая группировка топиков
- Tenant — изоляция ресурсов для разных организаций
- Subscription — именованная конфигурация потребления
- Partition — горизонтальное разделение топика
Работа с сообщениями
Пример producer на Python:
Пример consumer на Python:
1import pulsar
2
3client = pulsar.Client('pulsar://localhost:6650')
4
5# Создание consumer
6consumer = client.subscribe(
7 'my-topic',
8 subscription_name='my-subscription'
9)
10
11# Получение сообщений
12while True:
13 msg = consumer.receive()
14 try:
15 print(f"Received: {msg.data().decode('utf-8')}")
16 consumer.acknowledge(msg)
17 except Exception as e:
18 consumer.negative_acknowledge(msg)
Типы подписок
Pulsar поддерживает различные типы подписок:
- Exclusive — только один consumer на подписку
- Shared — несколько consumer разделяют сообщения
- Failover — один активный consumer, остальные в режиме ожидания
- Key_Shared — сообщения с одинаковыми ключами идут к одному consumer
Сравнение с Apache Kafka
Аспект | Pulsar | Kafka |
---|---|---|
Архитектура | Многоуровневая | Монолитная |
Хранение | BookKeeper | Локальные диски |
Multi-tenancy | Нативная поддержка | Требует настройки |
Geo-репликация | Встроенная | Требует MirrorMaker |
Schema registry | Встроенный | Отдельный компонент |
Функции Pulsar
Pulsar Functions — это легковесная обработка данных:
Мониторинг и управление
Основные команды администрирования:
Практические применения
Apache Pulsar идеально подходит для:
- Обработки событий в реальном времени
- Микросервисной архитектуры с async коммуникацией
- IoT и телеметрических данных
- Финансовых систем с требованиями к latency
- Multi-tenant SaaS платформ
- Geo-распределенных систем
FAQ
Когда выбирать Pulsar вместо Kafka?
Выбирай Pulsar, если тебе нужны multi-tenancy из коробки, geo-репликация, встроенный schema registry или более гибкая архитектура хранения.
Можно ли мигрировать с Kafka на Pulsar?
Да, Pulsar предоставляет Kafka-совместимый API и инструменты миграции, которые позволяют постепенно переносить приложения.
Насколько сложно администрировать Pulsar?
Pulsar требует больше компонентов чем Kafka, но предоставляет более мощные инструменты управления и мониторинга из коробки.