Streaming Brokers: Kafka vs Redpanda vs Pulsar¶
Summary
A side-by-side comparison of the three log-structured event streaming platforms in this vault: Apache Kafka (Apache-2.0 reference implementation, KRaft-only since 4.0), Redpanda (Kafka-API broker in C++, BSL 1.1 core plus Enterprise features under the Redpanda Community License) and Apache Pulsar (Apache-2.0, stateless brokers over BookKeeper). Versions, licenses and features match the topic pages as of 2026-09-25. RabbitMQ Streams and NATS JetStream are lighter log options, covered briefly at the end.
Which One Should I Pick?¶
The flowchart gives a first cut. The sections below explain each branch.
flowchart TD
Q1{"Need native multi-tenancy<br/>(tenants, namespaces) or built-in<br/>geo-replication without extra tools?"}
Q2{"Team can run three tiers<br/>(brokers, bookies, metadata store)<br/>or buy a managed Pulsar?"}
Q3{"Is a source-available license (BSL)<br/>acceptable, with Enterprise keys<br/>for tiered storage and DR?"}
Q4{"Top priorities: single binary,<br/>no JVM, low tail latency?"}
PULSAR["Apache Pulsar<br/>(4.0 LTS)"]
KAFKA["Apache Kafka<br/>(4.3, KRaft)"]
RP["Redpanda<br/>(26.2)"]
KAFKA2["Apache Kafka<br/>(broadest ecosystem, free tiered storage)"]
Q1 -->|"Yes"| Q2
Q1 -->|"No"| Q3
Q2 -->|"Yes"| PULSAR
Q2 -->|"No"| KAFKA
Q3 -->|"No"| KAFKA2
Q3 -->|"Yes"| Q4
Q4 -->|"Yes"| RP
Q4 -->|"No"| KAFKA2
At a Glance¶
| Dimension | Apache Kafka | Redpanda | Apache Pulsar |
|---|---|---|---|
| Latest version | 4.3.1 (2026-06-25). 4.4.0 in release process | 26.2.3 (2026-09-17) | 4.2.4 (2026-08-03). LTS 4.0.13 (2026-08-03). 5.0.0-M2 preview |
| Language | Java (JVM), some Scala | C++ (Seastar) | Java (JVM, broker needs Java 21) |
| License | Apache-2.0 | Core: BSL 1.1 (each release becomes Apache-2.0 after 4 years). Enterprise features: Redpanda Community License (RCL) plus license key | Apache-2.0 |
| Architecture | Broker = compute + storage | Broker = compute + storage (single binary) | Stateless brokers + BookKeeper bookies (storage) |
| Consensus / replication | KRaft controller quorum (metadata, KRaft-only since 4.0) + ISR replication (data) | Raft per partition + Raft controller | BookKeeper quorum writes (ensemble E, write quorum Qw, ack quorum Qa). Metadata in ZooKeeper or Oxia (Oxia recommended from 5.0) |
| Multi-tenancy | ACLs + quotas (no native tenants) | ACLs + quotas. RBAC/GBAC are Enterprise | Tenants → namespaces → topics (native) |
| Geo-replication | MirrorMaker 2. Confluent Cluster Linking (commercial) | Shadowing, offset-preserving DR (Enterprise, 25.3+). MirrorMaker 2 also works | Built-in, per-namespace, asynchronous |
| Tiered storage | KIP-405: early access 3.6, production-ready 3.9. Needs a RemoteStorageManager plugin |
Tiered Storage and Cloud Topics (GA 26.1). Enterprise-licensed | Native offloader (S3, GCS, Azure Blob, filesystem) |
| Schema registry | Separate: Confluent Schema Registry, Apicurio or Karapace | Built-in, Confluent-compatible API | Built-in, Pulsar-native (not Confluent-API compatible) |
| Stream processing | Kafka Streams, ksqlDB (Confluent Community License), Flink | Wasm data transforms in-broker (free, GA 24.1). Redpanda Connect pipelines. rpk sql (Oxla, 26.2) |
Pulsar Functions (in broker or on workers) |
| Queue semantics | Share groups (KIP-932, production-ready 4.2) | Consumer groups (Kafka API) | Shared and Key_Shared subscriptions |
| Wire protocol | Kafka protocol | Kafka protocol (compatible) | Pulsar binary protocol. MoP (MQTT) and AoP (AMQP) plugins. KoP (Kafka) is archived |
| Operational complexity | Medium (KRaft removed ZooKeeper) | Low (single binary) | High (brokers + bookies + metadata store) |
| Managed offerings | Confluent Cloud (Confluent is an IBM subsidiary since 2026-03-17), Amazon MSK, Aiven, NetApp Instaclustr, Azure Event Hubs (Kafka endpoint) | Redpanda Cloud (BYOC, Dedicated, Serverless) | StreamNative Cloud, DataStax Astra Streaming (IBM), Tencent Cloud TDMQ for Pulsar |
Redpanda licensing
The Redpanda Community Edition (BSL 1.1) is free for production use, except offering Redpanda to third parties as a streaming or queuing service. Tiered Storage, Remote Read Replicas, Cloud Topics, Iceberg Topics, Shadowing, RBAC and OIDC need an Enterprise license key. Apache Kafka's tiered storage (KIP-405) has no license restriction, although you must supply a storage plugin. See Redpanda: Licensing & Pricing.
When to Choose¶
Choose Kafka when¶
- You need the broadest ecosystem (Connect, Streams, Flink, Debezium, hundreds of connectors, many managed services).
- Your team already has Kafka operational expertise.
- You want Apache-2.0 licensing with no restrictions, including free tiered storage.
- You want queue-style consumption on the same platform (share groups, 4.2+).
- You need Confluent's commercial features (Cluster Linking, RBAC, audit logs).
Choose Redpanda when¶
- You want Kafka API compatibility with lower operational overhead.
- Tail latency matters (fintech, gaming, ad tech).
- You want a single binary with no JVM tuning.
- The BSL terms fit your use case and you accept an Enterprise subscription for tiered storage, Cloud Topics, Iceberg Topics or Shadowing.
- You want in-broker Wasm transforms or broker-native Iceberg Topics.
Choose Pulsar when¶
- You need native multi-tenancy (tenants and namespaces with quotas and policies).
- You need built-in geo-replication without external tooling.
- Independent compute and storage scaling is a hard requirement.
- You want queueing and streaming on the same topic (four subscription types).
- You have the ops capacity for a three-tier deployment, or use a managed service.
Performance Comparison¶
Benchmark caveat
All published benchmarks are vendor-influenced (Confluent and Redpanda have published competing results). The figures below are indicative ranges from the topic pages, not controlled measurements. Run OpenMessaging Benchmark on your own hardware before sizing.
| Metric | Kafka | Redpanda | Pulsar |
|---|---|---|---|
| Throughput reference point | ~605 MB/s peak on 3 × i3en.2xlarge, RF=3 (Confluent OMB, 2020, vendor benchmark) |
1 GB/s sustained on 3 × i3en.6xlarge (Redpanda OMB, vendor benchmark; results degraded with 50 producers in a 2023 rerun) |
No neutral or project-published figure recorded |
| p99 produce latency | Depends on GC, batching and acks (no neutral figure recorded) |
Around 80 ms at p99.99 at 1 GB/s on 3 nodes (Redpanda vendor benchmark, workload-specific) | Depends on bookie journal disks and GC (no neutral figure recorded) |
| Cold read from tiered storage | Adds object-store latency (KIP-405) | Adds object-store latency | Adds object-store latency (offloader) |
| Scaling | Linear with brokers | Linear with brokers | Brokers and bookies scale independently |
Details: Kafka Reference: Benchmark Results, Redpanda Reference: Performance Characteristics, Pulsar Explanation: Performance Characteristics.
Cost Comparison¶
| Factor | Kafka | Redpanda | Pulsar |
|---|---|---|---|
| Compute | JVM heap + OS page cache | Per-core Seastar shards (whole cores, 2 GB RAM per core minimum) | Broker heap and direct memory + bookie memory |
| Storage | Local disk (hot) + object storage (tiered, free) | Local NVMe (hot) + object storage (tiered, Enterprise) | Bookie journal and ledger disks (hot) + object storage (offload) |
| License | None | Enterprise subscription for object-storage features and DR | None |
| Ops headcount (qualitative) | Medium | Low | High |
Migration Paths¶
| From → To | Difficulty | Notes |
|---|---|---|
| Kafka → Redpanda | Low–medium | Clients work unchanged (same wire protocol). Data and offsets move by replication (MirrorMaker 2 or Redpanda Connect), not a binary swap. Tiered data cannot be read across systems |
| Redpanda → Kafka | Low–medium | Same as above in reverse. Redpanda's tiered-storage bucket layout is not readable by KIP-405 plugins, so replicate long-retention topics |
| Kafka → Pulsar | Medium–high | KoP is archived, so rewrite clients to the Pulsar SDK or use a vendor's Kafka-compatible service |
| Pulsar → Kafka | Medium–high | Rewrite clients. Key_Shared and individual acks have no exact Kafka equivalent (share groups come closest) |
Other Log-Structured Options¶
These are not full competitors to the three brokers above, but they cover replayable streams at smaller scale:
- RabbitMQ Streams (RabbitMQ 4.3.6, MPL 2.0): append-only, replicated streams and super streams with offset-based replay and retention by age or size. No tiered storage and no Kafka-scale ecosystem. A good fit when you already run RabbitMQ.
- NATS JetStream (NATS 2.15.0, Apache-2.0): Raft-replicated streams built into the NATS server, with at-least-once delivery and exactly-once through
Nats-Msg-Iddedup plus double ack. Suited to edge, multi-tenant and request-reply platforms rather than Kafka-style analytics pipelines.
See the Messaging Patterns Comparison for how all five systems map to log, queue and pub/sub patterns.
Sources¶
- Topic pages: Apache Kafka, Redpanda, Apache Pulsar, RabbitMQ, NATS
- Apache Kafka downloads and 4.0.0 release announcement (KRaft-only)
- Redpanda Licenses and Enterprise Features
- Redpanda 25.3: Shadowing
- Apache Pulsar architecture overview and BookKeeper concepts
- streamnative/kop (archived)
- Confluent: Kafka vs Pulsar vs RabbitMQ benchmark (2020, vendor)
- OpenMessaging Benchmark