Перейти к содержанию

Apache Pulsar

Раздел03 · Механизмы · Примеры

Тип материала: архитектурный разбор. Схемы и примеры иллюстративные, если не указано иное.

Область версий: Apache Pulsar 4.0.0 LTS; subscription/transaction settings явно. Проверка источников: 2026-11-02. Baselines не объявляются latest/security recommendations.

Архитектура и роль

FACT. Brokers обслуживают topics/subscriptions, BookKeeper bookies сохраняют ledgers, metadata service управляет coordination. Разделение serving/storage меняет scaling/recovery paths, но добавляет operational components. Subscription cursor — progress конкретного потребителя/группы, не SQL transaction.

Внутренние механизмы и движение данных

Topic partitions хранят managed ledgers; broker dispatch доставляет messages согласно subscription type. Exclusive/Failover/Shared/Key_Shared дают разные ordering/parallelism contracts. Key_Shared требует правильного key и batching configuration (key-based batching/отключение несовместимого batching), иначе routing assumptions нарушаются.

flowchart TB
  Producer --> Broker[Pulsar broker and topic partitions]
  Broker --> Bookies[BookKeeper durable ledgers]
  Broker --> Cursor[Subscription cursor]
  Cursor --> Dispatch[Subscription-type dispatch]
  Dispatch --> Consumers
  Metadata[Metadata coordination] --> Broker

Ordering и guarantees

Producer deduplication требует настройки broker/topic и стабильной producer identity/sequence protocol; application resend не автоматически исчезает. Pulsar transactions связывают publish/ack в поддерживаемых Pulsar resources, но не произвольную external DB transaction. Redelivery at-least-once требует downstream idempotency.

Версия и первичная документация.

Масштабирование и backpressure

Partitioned topics, bundle placement, broker dispatch и bookie disk/network/quorums ограничивают scale. Storage/serving separation не делает один hot key параллельным. Subscription backlog и retention/expiry policies влияют на стоимость и доступность replay. Geo-replication имеет отдельные async/conflict/failover semantics.

Failure / recovery / replay

Broker failover восстанавливает serving из durable managed ledgers и metadata; потеря quorum bookies либо metadata нарушает доступность. Ack потерян после target commit — replay. Cursor reset/reconsume/backfill требует новых subscription/generation и управления downstream effects; retention уже удалённых acked data не восстановить magic reset.

Версия и первичная документация.

Эксплуатация и мониторинг

Наблюдать backlog bytes/age per subscription, unacked/redelivery, storage write/read latency, bookie availability/disk, metadata health, offload errors, transaction coordinator и geo replication backlog. Отличать TTL expiry от successful business processing: backlog может исчезнуть без исполнения эффектов.

Ограничения и критерии выбора

Выбирать при выгоде от subscription models, storage separation и multi-tenant messaging и готовности сопровождать BookKeeper/metadata. Не объявлять универсальную дешевизну относительно Kafka без сравнения hardware, ops, retention и recovery.

FinTech / iGaming и реальные источники

FACT ограниченного уровня: официальный каталог Pulsar case studies содержит Intuit и Tencent game-data workloads. Это adoption evidence, не независимый benchmark и не доказательство нашего financial EOS. INFERENCE: highload event distribution и независимые subscriptions.

Практический пример

Сравнение topology/replay находится в Kafka/RabbitMQ/Pulsar. Native Pulsar runtime example в обязательный список не входит и не запускался; гарантии здесь документированы по4.0.x.

Типичные ошибки проектирования

Shared subscription как гарантированный per-key order; dedup без persistent producer identity; broker availability без BookKeeper quorum; cursor reset как восстановление удалённого log.

Вопросы на собеседовании

Shared сохраняет key ordering? Не как автоматическое обещание Key_Shared; выбирать тип по contract.

Transaction ack включает SQL commit? Нет.

Separation устраняет ops? Нет, меняет компоненты и failure domains.

Практические упражнения

Для двух независимых subscription задайте backlog retention, reset protocol и outage bookie quorum. Опишите обработку duplicate после ack loss.

Дополнительные источники