Redpanda 64,862 is a separate implementation of Kafka 129 's wire protocol, written in C++ on the Seastar framework. Each CPU core runs one pinned thread that owns its share of partitions, memory and I/O (thread per core), so there is no JVM, no garbage collector and no reliance on the page cache; every partition is its own Raft group, so there is no KRaft or ZooKeeper; and one binary also serves a schema registry and an HTTP proxy. The core is under the Business Source License 1.1, which allows any use except offering Redpanda as a streaming service and turns into Apache 2.0 four years after each release; enterprise features (tiered storage among them) need a licence. listings/l0618_redpanda.sh starts one node (compose/redpanda.yaml, rpk v26.2.3, the latest image) and points BookNest's producer and analytics consumer from Producing Order Events and Consuming for Analytics at it:
sed 's/localhost:33092/localhost:33192/' listings/booknest_producer.py > rp-producer.py
sed -e 's/localhost:33092/localhost:33192/' \
-e 's/"group.protocol": "consumer"/"group.protocol": "classic"/' \
listings/booknest_analytics.py > rp-analytics.py # why classic: l0618_protocols.pyrpk version: v26.2.3
...
390,737 sent, 0 failed, 0 undelivered
390,737 events in 6.7 s: {'order_placed': 100000, 'order_paid': 94106, 'order_cancelled':
5890, 'order_shipped': 93803, 'order_delivered': 93009, 'order_returned': 3929}
orders 100,000, cancelled 5,890, revenue kept 3,270,268.02
l3-redpanda 204.4MiB / 31.28GiBThe idempotent producer, zstd 126 batches, headers and committed offsets all worked, and the revenue matches Consuming for Analytics and Aiven's Free Kafka Plan, with Redpanda holding about 200 MiB of memory after the run, against 286 MiB for an idle Kafka broker (Docker Images). But one change was needed: with Kafka 4's consumer group protocol (KIP-848, The New Protocol (KIP-848)) the consumer silently received nothing. Kafka's own tool shows why, by asking which protocol APIs the server implements (listings/l0618_apis.sh and l0618_protocols.py):
Produce(0): 0 to 7 [usable: 7] Fetch(1): 4 to 13 [usable: 13] InitProducerId(22): 0 to 3 [usable: 3] ConsumerGroupHeartbeat(68): UNSUPPORTED ShareFetch(78): UNSUPPORTED StreamsGroupHeartbeat(88): UNSUPPORTED usable: 45, unsupported: 32 group.protocol=consumer records in 10 s: 0 errors: [] group.protocol=classic records in 10 s: 10000 errors: []
Redpanda answered 45 of the protocol APIs Kafka 4.3's tool knows and not 32 others, including the new consumer group heartbeat, share groups (Share Groups) and the Streams rebalance protocol. Its documentation promises compatibility for clients from Kafka 0.11 on; newer Kafka features arrive later, or never. "Kafka-API compatible" means: test the client features you use.