Kafka 4.x Queue Semantics support in Kafka Ingestion
- Dominant language
- Java
- Stars
- 14.1k
- Forks
- 3.8k
- Avg merge
- 2d 58m
- Merged PRs (30d)
- 233
Description
The Shared Group API (KIP-932) Kafka handles partition assignment automatically and consumer group coordination can be simplified, hence upgrading to Kafka Share Consumer API can have significant performance improvements.
### 1. Use Case: Breaking the Partition Bottleneck
Currently, Druid ingestion is limited by a **1:1 mapping** between Kafka partitions and Druid tasks.
* **The Problem:** High-volume "hot partitions" create bottlenecks, limiting ingestion scalability.
* **The Solution:** Leverage **Kafka Share Groups**, enabling multiple Druid tasks to consume from the same partition, treating Kafka as a distributed queue.
### 2. Importance & Benefits
By adopting architectural patterns from **Flink FLIP-573**, we achieve:
* **Horizontal Scalability:** Scale Druid tasks independently of Kafka partition count.
* **Instant Scaling:** No costly rebalancing. Adding a task is fast; the Kafka broker handles record assignment.
* **Improved Fault Tolerance:** Unacknowledged records are automatically redelivered to other tasks upon task failure.
Contributor guide
Research direction
The issue concerns Druid Kafka Ingestion and the Kafka Shared Group API from KIP-932, with Flink FLIP-573 cited as an architectural reference. Start by reviewing those APIs and the existing Kafka ingestion design. Done would mean supporting multiple Druid tasks on a partition, scaling without costly rebalancing, and redelivering unacknowledged records after task failure.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, kafka
- Domain
- data-engineering, stream-processing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100