// the find
apache/pulsar
Apache Pulsar - distributed pub-sub messaging system
Apache Pulsar is a distributed messaging and event streaming platform that separates storage from compute — brokers are stateless, and Apache BookKeeper handles persistence. It's aimed at teams who need both pub-sub and queue semantics on the same infrastructure, and who expect to run it at scale in a multi-tenant environment.
The storage/compute separation is architecturally sound: stateless brokers mean you can scale message serving without touching your storage layer. Geo-replication is built in at the topic level, not bolted on. Multi-tenancy with namespaces, quotas, and per-tenant auth is actually first-class rather than an afterthought. The unified messaging model (you can consume a topic as a queue with competing consumers OR as a pub-sub stream) removes the need for two separate systems.
The operational footprint is heavy — you're running Pulsar brokers, BookKeeper bookies, and ZooKeeper, which is three distributed systems to understand, deploy, and debug before you get a single message through. Client libraries outside Java are second-class: the Go and Python clients lag the Java client significantly in feature parity and tend to trail bug fixes. Kafka's ecosystem (Kafka Connect, Kafka Streams, Flink/Spark native connectors) is vastly larger, so migrating off Kafka to Pulsar means rebuilding integrations. Configuration surface area is enormous — broker.conf alone has hundreds of knobs, and wrong defaults under load will bite you in production before you find the right ones.