# Apache Pulsar

> Streaming platform separating serving from storage tiers

Apache Pulsar is an open-source messaging and streaming platform that splits brokers from storage, keeping segments in Apache BookKeeper so capacity and serving scale independently, with multi-tenancy and geo-replication built in.

Website: https://pulsar.apache.org

## Use it when

- Many teams share one streaming platform: multi-tenancy, quotas, and namespaces are architectural features, not conventions layered on top.
- You need built-in geo-replication; asynchronous multi-cluster replication with replicated subscriptions ships in the box.
- Your consumers mix patterns: log-style replay and shared work queues coexist through subscription modes on the same topic.
- Adding capacity must not mean rebalancing data; stateless brokers over BookKeeper segments make scaling a serving change, not a data move.

## Think twice when

- A small team runs it: brokers plus BookKeeper plus a metadata store is one of the largest footprints in this capability, against Kafka in KRaft mode or Redpanda's single binary.
- The Kafka ecosystem is the requirement; protocol handlers exist, but tooling and hiring gravitate to Kafka itself.
- Your volume is modest; the architecture earns its keep at scale it may never see.

## How it runs

Self-hosted as brokers, a BookKeeper ensemble, and a metadata store (Oxia recommended for new deployments, ZooKeeper still supported), commonly on Kubernetes. Pulsar IO connectors and Pulsar Functions run on worker nodes; tiered offload moves old segments to object storage. Managed offerings come from StreamNative and others.

## Details

### General

| Attribute | Value |
| --- | --- |
| License | Open source (permissive) |
| SPDX identifier | Apache-2.0 |
| Deployment | Self-hosted, Managed, Hybrid |
| Workload | Streaming |
| Operational complexity | High |
| Pricing | Free |
| Language | Java |
| Repository | https://github.com/apache/pulsar |
| Documentation | https://pulsar.apache.org/docs/ |
| Stars | 15.3k |

### Event Streaming

| Attribute | Value |
| --- | --- |
| Protocol | Pulsar's own; Kafka, AMQP and MQTT via protocol handlers |
| Consumption model | Log with subscriptions: replay, plus shared queue mode |
| Storage | Stateless brokers over BookKeeper segments; tiered offload |
| What you run | Brokers, BookKeeper and a metadata store, Oxia or ZooKeeper |
| Scaling | Add brokers without moving data; segments spread across BookKeeper |
| Multi-region | Built in: asynchronous multi-cluster, with replicated subscriptions |
| Delivery guarantee | Exactly-once with transactions, since 2.8 |
| Connectors | Pulsar IO sources and sinks, run as Functions on worker nodes |
| Transformations | Pulsar Functions, including a transform Function before a sink |
| Billing unit | None for the project; managed Pulsar billed by the vendor |

## Capabilities

- [Event Streaming](https://matca.io/capabilities/event-streaming)

---

Source: https://matca.io/apache-pulsar
Last updated: 2026-08-31T11:40:47.130Z
