Convert Figma logo to code with AI

redpanda-data logoredpanda

Redpanda is a streaming data platform for developers. Kafka API compatible. 10x faster. No ZooKeeper. No JVM!

9,782
593
9,782
1,156

Top Related Projects

28,601

Mirror of Apache Kafka

14,185

Apache Pulsar - distributed pub-sub messaging system

Open source RabbitMQ: core server and tier 1 (built-in) plugins

21,362

Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications.

23,929

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:

  1. 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
  1. Create a topic:
docker exec -it redpanda-1 rpk topic create my-topic
  1. Produce messages:
docker exec -it redpanda-1 rpk topic produce my-topic
  1. 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

28,601

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.

14,185

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.

21,362

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.

23,929

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Redpanda

Documentation Slack Twitter Go C++ Redpanda University

redpanda sitting

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.

Code of Conduct

Contribute to the Code

Resources

Redpanda Documentation

Redpanda Blog

Upcoming Redpanda Events

Redpanda Support

Redpanda University