-
Notifications
You must be signed in to change notification settings - Fork 7
docs(inkless:design): add diskless-managed rf feature design #478
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: design/ts-unification
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds a comprehensive design document for implementing managed replication factor (RF) for diskless topics in the Inkless system. The document proposes transitioning from the current RF=1 with faked metadata to RF=rack_count with real KRaft-managed replicas, enabling bidirectional topic migration and standard RLM integration.
Changes:
- Adds new
DISKLESS_MANAGED_RF.mddesign document with detailed approach comparison, cost analysis, and implementation plan - Updates
DESIGN.mdto reference the new design document for Stream 4: Multi-Replica Model for Diskless Topics
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| docs/inkless/ts-unification/DISKLESS_MANAGED_RF.md | New comprehensive design document proposing RF=rack_count approach with transformer-first availability, including motivation, design details, implementation path (6-8 weeks), and rejected alternatives |
| docs/inkless/ts-unification/DESIGN.md | Adds cross-references to the new DISKLESS_MANAGED_RF.md document in the Multi-Replica Model section and References section |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| | Trade-off | Accepted | Rationale | | ||
| |-----------|----------|-----------| | ||
| | KRaft metadata may show offline brokers | Yes | Availability is not blocked; eventual consistency is acceptable | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
KRaft metadata may show offline brokers
Internally or to the clients?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To admin operations/metrics (e.g. topic describe), not to clients.
I'll clarify this
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See 2a0ebee
Ensure cross-az is the last resort when routing requests, and that replica placement is fully decoupled.
|
Moving it to draft to keep it as a live doc while this feature is developed. |
Add diskless.managed.rf.enable config (default: false) to control whether diskless topics use managed replicas with RF=rack_count or legacy RF=1. This config only affects topic creation. When enabled, new diskless topics will be created with one replica per rack using standard KRaft placement. Part of Phase 1: Diskless Managed Replicas (See #478 docs/inkless/ts-unification/DISKLESS_MANAGED_RF.md)
When diskless.managed.rf.enable=true, new diskless topics are created with RF=rack_count using standard KRaft replica placement instead of legacy RF=1. Changes: - Compute RF from rack cardinality via rackCardinality() - Use standard replicaPlacer.place() for rack-aware assignment - Allow manual replica assignments when managed replicas enabled - Add checkstyle suppression for extended createTopic method Phase 1 limitations: - Add Partitions inherits RF from existing partitions (Phase 3) - Transformer not updated, uses legacy routing (Phase 2) - Integration tests deferred to Phase 2 (See #478 docs/inkless/ts-unification/DISKLESS_MANAGED_RF.md)
No description provided.