redpanda
Redpanda is a streaming data platform for developers. Kafka API compatible. 10x faster. No ZooKeeper. No JVM!
Top Related Projects
Mirror of Apache Kafka
Apache Pulsar - distributed pub-sub messaging system
Open source RabbitMQ: core server and tier 1 (built-in) plugins
Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications.
Apache Flink
Quick Overview
Redpanda is a modern streaming data platform designed to be a faster, more efficient, and API-compatible alternative to Apache Kafka. It's built from the ground up in C++ to deliver high performance, low latency, and reduced operational complexity for real-time data streaming applications.
Pros
- High performance and low latency due to its C++ implementation and optimized architecture
- API-compatible with Apache Kafka, allowing for easy migration and integration with existing Kafka ecosystems
- Simplified operations with a single binary deployment and no external dependencies
- Resource-efficient, requiring less hardware to achieve similar performance compared to Kafka
Cons
- Relatively new project compared to Apache Kafka, which may lead to a smaller community and ecosystem
- Limited cloud-native features compared to some established streaming platforms
- Potential learning curve for teams not familiar with Redpanda-specific features and optimizations
Getting Started
To get started with Redpanda, follow these steps:
- Install Redpanda using Docker:
docker run -d --pull=always --name=redpanda-1 --rm \
-p 8081:8081 \
-p 8082:8082 \
-p 9092:9092 \
-p 9644:9644 \
docker.redpanda.com/redpandadata/redpanda:latest \
redpanda start \
--overprovisioned \
--smp 1 \
--memory 1G \
--reserve-memory 0M \
--node-id 0 \
--check=false
- Create a topic:
docker exec -it redpanda-1 rpk topic create my-topic
- Produce messages:
docker exec -it redpanda-1 rpk topic produce my-topic
- Consume messages:
docker exec -it redpanda-1 rpk topic consume my-topic
For more detailed instructions and advanced usage, refer to the official Redpanda documentation.
Competitor Comparisons
Mirror of Apache Kafka
Pros of Kafka
- Mature ecosystem with extensive tooling and integrations
- Large community support and widespread adoption
- Proven scalability for massive data volumes
Cons of Kafka
- Complex setup and configuration
- Higher resource consumption
- Steeper learning curve for developers
Code Comparison
Kafka (Java):
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
Redpanda (C++):
#include <cppkafka/producer.h>
#include <cppkafka/configuration.h>
cppkafka::Configuration config = {
{"metadata.broker.list", "localhost:9092"}
};
cppkafka::Producer producer(config);
Redpanda aims to be a more efficient and developer-friendly alternative to Kafka. It offers:
- Simpler setup and maintenance
- Lower resource usage
- Kafka API compatibility
However, Redpanda is a newer project with a smaller ecosystem and community compared to Kafka. Both projects serve similar purposes in distributed streaming and event processing, with Redpanda focusing on performance and ease of use, while Kafka provides a battle-tested solution with extensive tooling and integrations.
Apache Pulsar - distributed pub-sub messaging system
Pros of Pulsar
- Multi-tenancy support with built-in isolation between tenants
- Geo-replication capabilities for global data distribution
- Tiered storage for cost-effective long-term data retention
Cons of Pulsar
- More complex architecture and setup compared to Redpanda
- Steeper learning curve for developers and operators
- Higher resource requirements for deployment and operation
Code Comparison
Pulsar (Java):
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar://localhost:6650")
.build();
Producer<byte[]> producer = client.newProducer()
.topic("my-topic")
.create();
Redpanda (C++):
#include <cppkafka/cppkafka.h>
cppkafka::Configuration config = {
{"metadata.broker.list", "localhost:9092"}
};
cppkafka::Producer producer(config);
Both Pulsar and Redpanda are distributed messaging and streaming platforms, but they have different design philosophies and target use cases. Pulsar offers a more feature-rich ecosystem with multi-tenancy and geo-replication, making it suitable for large-scale, globally distributed applications. Redpanda, on the other hand, focuses on simplicity and performance, aiming to be a drop-in replacement for Kafka with improved efficiency and ease of use. The code comparison shows that both platforms have relatively straightforward producer setup, with Pulsar using Java and Redpanda using C++ in these examples.
Open source RabbitMQ: core server and tier 1 (built-in) plugins
Pros of RabbitMQ Server
- Mature and battle-tested messaging system with a large community and extensive documentation
- Supports multiple messaging protocols (AMQP, MQTT, STOMP) out of the box
- Offers advanced features like message routing, clustering, and federation
Cons of RabbitMQ Server
- Generally lower throughput and higher latency compared to Redpanda
- More complex setup and configuration, especially for high-performance scenarios
- Written in Erlang, which may be less familiar to many developers
Code Comparison
RabbitMQ Server (Erlang):
basic_publish(Channel, <<"my_exchange">>, <<"routing_key">>, <<"Hello, World!">>),
{#'basic.get_ok'{}, Content} = amqp_channel:call(Channel, #'basic.get'{queue = <<"my_queue">>}),
io:format("Received: ~p~n", [Content#amqp_msg.payload]),
Redpanda (C++):
producer.produce(kafka::TopicPartition("my_topic", 0), "Hello, World!");
auto records = consumer.poll(std::chrono::milliseconds(100));
for (const auto& record : records) {
std::cout << "Received: " << record.value() << std::endl;
}
Both examples show basic message publishing and consuming, but Redpanda's API is more similar to Kafka's, while RabbitMQ uses AMQP-specific concepts.
Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications.
Pros of RocketMQ
- More mature and widely adopted in production environments
- Supports a wider range of messaging patterns and scenarios
- Offers built-in features like message tracing and transaction support
Cons of RocketMQ
- Higher complexity and steeper learning curve
- Requires more resources and configuration for optimal performance
- Less focus on Kafka API compatibility compared to Redpanda
Code Comparison
RocketMQ (Java):
DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName");
producer.setNamesrvAddr("127.0.0.1:9876");
producer.start();
Message msg = new Message("TopicTest", "TagA", "Hello RocketMQ".getBytes(RemotingHelper.DEFAULT_CHARSET));
SendResult sendResult = producer.send(msg);
Redpanda (C++):
#include <cppkafka/producer.h>
cppkafka::Configuration config = {
{"metadata.broker.list", "127.0.0.1:9092"}
};
cppkafka::Producer producer(config);
producer.produce(cppkafka::MessageBuilder("topic_name").payload("Hello Redpanda"));
Both RocketMQ and Redpanda are distributed messaging and streaming platforms, but they have different design philosophies and target use cases. RocketMQ offers a more comprehensive feature set and is well-established in large-scale production environments, particularly in China. Redpanda, on the other hand, focuses on Kafka API compatibility and aims to provide a simpler, more performant alternative with a smaller resource footprint.
Apache Flink
Pros of Flink
- More mature and widely adopted in the industry
- Supports both batch and stream processing
- Extensive ecosystem with many connectors and libraries
Cons of Flink
- Steeper learning curve and more complex setup
- Higher resource requirements for small-scale applications
- Less suitable for Kafka-like messaging scenarios
Code Comparison
Flink (Java):
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<String> text = env.readTextFile("input.txt");
DataStream<Tuple2<String, Integer>> counts = text
.flatMap(new Tokenizer())
.keyBy(value -> value.f0)
.sum(1);
counts.print();
Redpanda (C++):
#include <cppkafka/cppkafka.h>
cppkafka::Configuration config = {
{"metadata.broker.list", "localhost:9092"},
{"group.id", "example_group"}
};
cppkafka::Consumer consumer(config);
consumer.subscribe({"my_topic"});
While Flink is a distributed processing framework for both batch and streaming data, Redpanda is primarily a Kafka-compatible streaming platform. Flink offers more comprehensive data processing capabilities, whereas Redpanda focuses on high-performance message streaming with Kafka compatibility. The code examples illustrate Flink's data processing approach versus Redpanda's Kafka-like producer-consumer model.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Redpanda
Redpanda is the most complete, Apache Kafka®-compatible streaming data platform, designed from the ground up to be lighter, faster, and simpler to operate. Free from ZooKeeper⢠and JVMs, it prioritizes an end-to-end developer experience with a huge ecosystem of connectors, configurable tiered storage, and more.
Table of Contents
Get started
Prebuilt packages
Redpanda Data recommends using the following free, prebuilt stable releases.
Debian/Ubuntu
curl -1sLf \
'https://dl.redpanda.com/nzc4ZYQK3WRGd9sy/redpanda/cfg/setup/bash.deb.sh' \
| sudo -E bash
sudo apt-get install redpanda
Fedora/RedHat/Amazon Linux
curl -1sLf \
'https://dl.redpanda.com/nzc4ZYQK3WRGd9sy/redpanda/cfg/setup/bash.rpm.sh' \
| sudo -E bash
sudo yum install redpanda
macOS
Download the rpk
binary here. Docker is required on MacOS.
brew install redpanda-data/tap/redpanda && rpk container start
Other Linux environments
To install from a .tar.gz
archive, download the file and extract it into /opt/redpanda
.
For amd64:
curl -LO \
https://dl.redpanda.com/nzc4ZYQK3WRGd9sy/redpanda/raw/names/redpanda-amd64/versions/23.3.6/redpanda-24.2.7-amd64.tar.gz
For arm64:
curl -LO \
https://dl.redpanda.com/nzc4ZYQK3WRGd9sy/redpanda/raw/names/redpanda-arm64/versions/23.3.6/redpanda-24.2.7-arm64.tar.gz
Replace 24.2.7
with the version you want to download. See Release Notes.
Build Manually
Redpanda Data uses Bazel as the build system. Bazel automatically manages most of the toolchains and third-party dependencies.
We rely on bazelisk to get the right version of bazel needed for the build. You can for example install it as follows and add it to your $PATH (or use one of the other suggested ways from their repo).
wget -O ~/bin/bazel https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64 && chmod +x ~/bin/bazel
There are a few system libraries and preinstalled tools our build assumes are available locally. To bootstrap and build redpanda along with all its tests.
sudo ./bazel/install-deps.sh
bazel build --config=release //...
For more build configurations, see .bazelrc
.
Release candidate builds
Redpanda Data creates a release candidate (RC) build when we get close to a new release, and we publish it to make new features available for testing. RC builds are not recommended for production use.
RC releases on Debian/Ubuntu
curl -1sLf \
'https://dl.redpanda.com/E4xN1tVe3Xy60GTx/redpanda-unstable/setup.deb.sh' \
| sudo -E bash
sudo apt-get install redpanda
RC releases on Fedora/RedHat/Amazon Linux
curl -1sLf \
'https://dl.redpanda.com/E4xN1tVe3Xy60GTx/redpanda-unstable/setup.rpm.sh' \
| sudo -E bash
sudo yum install redpanda
RC releases on Docker
Example with v23.1.1-rc1
:
docker pull docker.redpanda.com/redpandadata/redpanda-unstable:v23.1.1-rc1
Community
Slack: This is the primary way the community interacts in real time. :)
Github Discussions: This is for longer, async, thoughtful discussions.
GitHub Issues: This is reserved only for actual issues. Please use the mailing list for discussions.
Resources
Top Related Projects
Mirror of Apache Kafka
Apache Pulsar - distributed pub-sub messaging system
Open source RabbitMQ: core server and tier 1 (built-in) plugins
Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications.
Apache Flink
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot