Skip to content

redis-field-engineering/korvet-dist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Korvet

A nimble, high-performance Kafka-compatible streaming service backed by Redis Streams.

What is Korvet?

Korvet is a Kafka-compatible streaming service that enables existing Kafka clients to work with Redis Streams. Like its namesake—a fast, agile corvette (attack boat)—Korvet is designed to be nimble and efficient.

Key Features

  • Kafka Protocol Compatible: Works with existing Kafka clients (Filebeat, Logstash, Spark Streaming, kafka-console-producer/consumer)

  • Redis Streams Storage: Leverages Redis Streams for high-performance message storage

  • Consumer Groups: Full support for Kafka consumer groups with offset management

  • Topic Management: Create, delete, and configure topics via Kafka Admin API

  • Multi-Tenant Ready: Built-in tenant isolation with configurable stream key patterns

Architecture Overview

┌─────────────┐     ┌─────────────┐     ┌──────────────┐
│  Filebeat   │────▶│             │────▶│              │
└─────────────┘     │             │     │    Redis     │
                    │   Korvet    │     │   Streams    │
┌─────────────┐     │   Server    │     │              │
│  Logstash   │────▶│             │◀────│  (Storage)   │
└─────────────┘     │  (Kafka     │     │              │
                    │   Protocol) │     └──────────────┘
┌─────────────┐     │             │
│   Spark     │◀────│             │
│  Streaming  │     └─────────────┘
└─────────────┘

Data Flow

  1. Produce: Kafka clients send messages via Kafka protocol → Korvet → Redis Streams

  2. Consume: Kafka clients fetch messages via Kafka protocol → Korvet → Redis Streams

  3. Consumer Groups: Offset management and group coordination handled by Korvet

Quick Start

The fastest way to try Korvet is with the ready-to-run samples:

# 2-minute demo with Kafka CLI tools
cd samples/kafka-cli
make up
make producer  # Terminal 1
make consumer  # Terminal 2

See all samples for more examples.

Run Locally with Docker

Prerequisites: Docker

# Start Redis
docker run -d -p 6379:6379 redis

# Run Korvet server
docker run -d -p 9092:9092 -p 8080:8080 \
  -e KORVET_REDIS_HOST=host.docker.internal \
  redisfield/korvet

Configuration

See the documentation site for complete configuration options.

Basic configuration in application.yml:

korvet:
  server:
    host: 0.0.0.0
    port: 9092
  redis:
    host: localhost
    port: 6379

Samples & Examples

Try out Korvet with ready-to-run samples:

See all samples for detailed documentation.

Use Cases

  • Log Aggregation: Stream logs from Filebeat/Logstash to Redis Streams via Kafka protocol

  • Event Streaming: Real-time event processing with Spark Streaming using Kafka consumer API

  • IoT Data Pipelines: High-velocity sensor data ingestion with Redis Streams performance

  • Kafka Migration: Gradual migration from Kafka to Redis Streams with protocol compatibility

Technology Stack

Component Technology

Protocol

Kafka wire protocol (Netty)

Storage

Redis Streams (Lettuce client)

Framework

Spring Boot

Language

Java 17

Build

Gradle

Deployment

Docker, Kubernetes

Performance

Target performance metrics:

Metric Target

Throughput

100K+ messages/sec

Latency (p99)

< 10ms

Concurrent Connections

1000+ clients

Support

Etymology

Korvet comes from:

  • KoR: Kafka-on-Redis

  • Corvette: A fast, agile sports car (performance)

  • Corvette (French): A nimble attack boat (agility)

Fast, nimble, and efficient—just like our streaming service.