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,389
577
9,389
1,490

Top Related Projects

28,317

Mirror of Apache Kafka

14,104

Apache Pulsar - distributed pub-sub messaging system

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

21,052

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

23,783

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,317

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,104

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,052

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,783

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 sitting

Redpanda is a streaming data platform for developers. Kafka® API-compatible. ZooKeeper® free. JVM free. We built it from the ground up to eliminate complexity common to Apache Kafka, improve performance by up to 10x, and make the storage architecture safer, and more resilient. The simpler devex lets you focus on your code (instead of fighting Kafka) and develop new use cases that were never before possible. The business benefits from a significantly lower total cost and faster time to market. A new platform that scales with you from the smallest projects to petabytes of data distributed across the globe!

Community

Slack is the main way the community interacts with one another in real-time :)

Github Discussion is preferred for longer, async, thoughtful discussions

GitHub Issues is reserved only for actual issues. Please use the mailing list for discussions.

Code of conduct code of conduct for the community

Contributing docs

Getting Started

Prebuilt Packages

We recommend using our free & prebuilt stable releases below.

On MacOS

Simply download our rpk binary here. We require Docker on MacOS

brew install redpanda-data/tap/redpanda && rpk container start

On Debian/Ubuntu

curl -1sLf \
  'https://dl.redpanda.com/nzc4ZYQK3WRGd9sy/redpanda/cfg/setup/bash.deb.sh' \
  | sudo -E bash

sudo apt-get install redpanda

On Fedora/RedHat/Amazon Linux

curl -1sLf \
  'https://dl.redpanda.com/nzc4ZYQK3WRGd9sy/redpanda/cfg/setup/bash.rpm.sh' \
  | sudo -E bash

sudo yum install redpanda

On Other Linux

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-23.3.6-amd64.tar.gz

For arm64:

curl -LO \
  https://dl.redpanda.com/nzc4ZYQK3WRGd9sy/redpanda/raw/names/redpanda-arm64/versions/23.3.6/redpanda-23.3.6-arm64.tar.gz

Replace 23.3.6 with the appropriate version you are trying to download.

GitHub Actions

    - name: start redpanda
      uses: redpanda-data/github-action@v0.1.3
      with:
        version: "latest"

Now you should be able to connect to redpanda (kafka-api) running at localhost:9092

Build Manually

We provide a very simple build system that uses your system libraries. We recommend users leverage our pre-built stable releases which are vetted, tested, and reproducible with exact versions of the entire transitive dependency graph, including exact compilers all built from source. The only thing we do not build yet is the Linux Kernel, but soon!

Currently clang 16 is required. We test the open-source build nightly using Fedora 38.

sudo ./install-dependencies.sh
cmake --preset release
cmake --build --preset release

For quicker dev setup, we provide a docker image with the toolchain installed.

Release candidate builds

We create a release candidate (RC) build when we get close to a new release and publish these 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

This is an example with the v23.1.1-rc1 version prior to the 23.1.1 release.

docker pull docker.redpanda.com/redpandadata/redpanda-unstable:v23.1.1-rc1