Redpanda is the Kafka-compatible streaming platform written in C++ — 10x faster, no JVM, no ZooKeeper, single binary deployment. And the free tier handles production workloads.
Why Redpanda Over Kafka?
Kafka requires Java, ZooKeeper (or KRaft), and complex tuning. Redpanda:
- 10x lower latency — p99 < 10ms vs Kafka's 100ms+
- No JVM — written in C++, thread-per-core architecture
- No ZooKeeper — built-in Raft consensus
- Single binary — one process, no dependencies
- Kafka API compatible — use your existing Kafka clients
- Built-in Schema Registry — no separate Confluent service
- Built-in HTTP Proxy — produce/consume via REST
Quick Start
# Docker (single node)
docker run -d --name redpanda \
-p 9092:9092 \
-p 8081:8081 \
-p 8082:8082 \
-p 9644:9644 \
docker.redpanda.com/redpandadata/redpanda:latest \
redpanda start --smp 1 --memory 1G --overprovisioned
# Create a topic
docker exec -it redpanda rpk topic create events --partitions 3
# List topics
docker exec -it redpanda rpk topic list
Produce Messages (Kafka Client — Works As-Is)
import { Kafka } from "kafkajs";
const kafka = new Kafka({
clientId: "my-app",
brokers: ["localhost:9092"], // Redpanda, not Kafka!
});
const producer = kafka.producer();
await producer.connect();
// Send events
await producer.send({
topic: "user-events",
messages: [
{
key: "user-123",
value: JSON.stringify({
type: "page_view",
page: "/pricing",
timestamp: Date.now(),
}),
},
{
key: "user-456",
value: JSON.stringify({
type: "signup",
plan: "pro",
timestamp: Date.now(),
}),
},
],
});
console.log("Events sent to Redpanda");
await producer.disconnect();
Consume Messages (Stream Processing)
const consumer = kafka.consumer({ groupId: "analytics-service" });
await consumer.connect();
await consumer.subscribe({ topic: "user-events", fromBeginning: true });
await consumer.run({
eachMessage: async ({ topic, partition, message }) => {
const event = JSON.parse(message.value.toString());
switch (event.type) {
case "page_view":
console.log(`User viewed ${event.page}`);
// Update analytics
break;
case "signup":
console.log(`New signup: ${event.plan} plan`);
// Trigger welcome email
break;
case "purchase":
console.log(`Purchase: $${event.amount}`);
// Process payment
break;
}
},
});
HTTP Proxy (No Client Library Needed!)
bash
# Produce via HTTP
curl -s -X POST http://localhost:8082/topics/events \
-H "Content-Type: application/vnd.kafka.json.v2+json" \
-d {
Top comments (0)