Commit 1aa68e8
070 - Router SPI
Introduce a Router plugin API for routing Kafka requests across multiple upstream clusters. Routers form a DAG of named routes, each targeting a cluster or another router, enabling use cases like union clusters, principal-aware routing, and topic splicing.
Key design elements:
- Router/RouterFactory plugin lifecycle mirroring Filter/FilterFactory
- VirtualNode as opaque broker identity across multi-cluster topologies
- RouterContext for sending requests and building responses
- Opt-in TopologyService with async discovery and snapshot-based results
- Per-route filter chains and SASL plugin placement rules
- Deterministic node ID mapping via V = id + S × t formula
- Configuration model with clusterDefinitions, routerDefinitions, and a discriminated union target property on routes and virtual clusters
Signed-off-by: Tom Bentley <tbentley@redhat.com>
Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com>
Assisted-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Assisted-by: Claude Opus 4.6 <noreply@anthropic.com>1 parent 8988d36 commit 1aa68e8
1 file changed
Lines changed: 857 additions & 0 deletions
0 commit comments