|
For the latest stable version, please use Korvet 0.12.5! |
Frequently Asked Questions
Common questions about Korvet.
General
What is Korvet?
Korvet is a Kafka-compatible streaming service backed by Redis Streams, with optional tiered storage to Delta Lake for long-term archival.
Why use Korvet instead of Kafka?
-
Simpler operations: No ZooKeeper, no partition rebalancing complexity
-
Redis integration: Leverage existing Redis infrastructure and persistence
-
Low latency: Sub-millisecond read/write performance with Redis Streams
-
Optional cost optimization: Tiered storage to Delta Lake for long-term retention
-
Analytics-ready: Optional Delta Lake integration for Spark/Flink analytics
Is Korvet production-ready?
Korvet is in active development. The core features are functional:
-
✅ Kafka protocol implementation (Produce, Fetch, Consumer Groups, Admin API)
-
✅ Redis Streams storage with retention policies
-
✅ Async operations for high throughput
-
✅ Metrics and observability
-
🚧 Optional Delta Lake tiering (requires separate Flink job)
Compatibility
Which Kafka clients work with Korvet?
Any Kafka client that supports the Kafka protocol should work. Tested clients include:
-
Java: kafka-clients
-
Python: kafka-python, confluent-kafka-python
-
Go: sarama
-
Node.js: kafkajs
What Kafka features are supported?
Supported:
-
✅ Produce API
-
✅ Fetch API
-
✅ Consumer Groups (JoinGroup, SyncGroup, Heartbeat, LeaveGroup, OffsetCommit, OffsetFetch)
-
✅ Topic metadata
-
✅ Admin API (CreateTopics, DeleteTopics, DescribeConfigs, DescribeCluster)
-
✅ Compression (GZIP, SNAPPY, LZ4, ZSTD)
Not supported:
-
❌ Transactions
-
❌ Exactly-once semantics (at-least-once delivery only)
Performance
What throughput can Korvet handle?
Performance depends on your Redis instance and configuration. With async operations and pipelining:
-
Produce: 50,000+ messages/second per instance (tested up to 170k msg/sec)
-
Fetch: 100,000+ messages/second per instance (tested up to 313k msg/sec)
-
Latency: Sub-millisecond p50, 1-3ms p95, <100ms p99
See the load-testing sample for benchmarking tools.
Storage
How long can I keep data in Redis?
As long as your Redis instance has capacity. Configure retention policies (retention.ms and retention.bytes) to automatically trim old messages at write time.
What happens when Redis is full?
You have several options:
-
Increase Redis memory: Scale up your Redis instance
-
Configure retention: Set
retention.msorretention.bytesto automatically trim old messages -
Enable tiered storage: Configure optional Delta Lake archival to move old messages to object storage
-
Redis eviction policies: Configure Redis eviction (e.g.,
allkeys-lru) as a last resort
Operations
How do I monitor Korvet?
Korvet exposes metrics via Prometheus and health checks via Spring Boot Actuator. See Monitoring.
How do I troubleshoot issues?
-
Check logs (JSON format by default)
-
Review metrics in Prometheus
-
Check health endpoints
Can I run Korvet in Kubernetes?
Yes! See Deployment guide for Kubernetes manifests.
Development
How do I contribute to Korvet?
See the GitHub repository for contribution guidelines.
Where can I report bugs?
File an issue at https://github.com/redis-field-engineering/korvet-dist/issues