DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
| Table of Contents |
|---|
Status
Current state: Voting Accepted
Discussion thread: here
Vote thread: here
...
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Motivation
...
Background
The Apache Kafka protocol has become a successful base for building streaming applications, and has attracted workloads that push the Apache Kafka implementation to new limits. The Apache Kafka implementation is designed around low-durability block storage and direct replication, and provides strong consistency and high durability backed by commodity hardware.
Currently, Apache Kafka is often operated in cloud hyperscaler environments where high-reliability object storage is available and more cost-effective than block storage for equivalent workloads. The existing Tiered Storage feature (KIP-405) provides the capability to use object storage for inactive segments, and has seen widespread adoption. However, Tiered Storage does not remove the need for replication and durable storage of active segments, which is the most substantial infrastructure cost for Apache Kafka operators on hyperscalers today.
...
Even in the case where network traffic is not accounted; we believe that the operational benefits of Diskless topics are still appealing to Kafka users, for example:
- Cluster scalability increases when less data is required to be stored on disks and rebalanced between brokers.
- Object storages normally have better durability than local disks.
Multiple protocol-compatible alternatives to Apache Kafka now use object storage to fully replace direct replication and substantially lower the cost to operate a cluster on a hyperscaler cloud. These alternatives are finding market success and their adoption is rising, showing a general market interest in this optimization.
...
- Write through to object storage, avoiding using local disks for caching instead of durable storage
- Reduce or eliminate broker disks on some nodes by configuring extremely low local retention
- Separate handling of topic data (keys and values) and metadata (offsets, timestamps, etc) for more flexible operation
- Pick pluggable commodity storage backends based on their environment
- Tradeoff cost optimization and latency on a per-topic basis
...
It is also worth mentioning that Diskless topics are not meant to change the Kafka Storage API, but to have a separate request processing that takes care of the access to remote storage.
Diskless topics may be configured for extremely short on-disk retention times (10s of seconds), or configured with memory-backed storage in clusters with suitable memory available.
In short, Diskless is to “No Disks” as Serverless is to “No Servers,” the attached disks become a less important abstraction for operators but are still functionally present.
...
This KIP will not require any changes to the codebase or documentation upon acceptance. By accepting this KIP, we will come to a consensus on the need for this feature, and its end-user requirements, but not any specific implementation details.
At a high level, Diskless Topics are a new topic type, with a distinct ingestion engine for assigning offsets for incoming data, and durably storing those assignments. They will operate in parallel to classic topics, and copy data to Tiered Storage. Data will remain accessible to consumers both in the ingestion engines and in tiered storage.
For details on the planned implementation, please see the integral follow-up KIPs:
- KIP-1163: Diskless Core
- KIP-1164: Topic Based Batch Diskless Coordinator
- KIP-1181: Metadata Rack Awareness for Diskless Topics
Each of these KIPs will have its own discussion and voting. Effort should be focused on this KIP first, and only after the community has generally agreed this KIP is something we want, should the particular implementation be designed. These KIPs will influence one another, and together they constitute the minimum viable form of this feature.
...
- Topic Type Changing: Allow classic topics to be changed into Diskless and vice versa.
- Broker Roles: Specializing brokers between produce/consume/coordination/compaction operations and permitting heterogeneous Kafka clusters
- Parallel Produce Handling: Processing multiple Produce requests concurrently, increasing potential per-producer throughput in high latency environments.
- Iceberg Format: Allowing massively parallel processing of at-rest topic data. This work enables a pluggable storage interface where one can innovate in the log format layer independentlyDynamically Enabled Diskless: Allowing extremely easy migrations to try out & revert Diskless
- Multi-region active-active topics with automatic failover by replicating topic metadata
These components are less defined, and currently don’t have KIPs attached. Contributions are welcome to either suggest other extensions, or design one of the above extensions. Design, discussion, and voting on these is expected to begin after the integral KIPs are complete.
Public Interfaces
Briefly list any new interfaces that will be introduced as part of this proposal or any existing interfaces that will be removed or changed. The purpose of this section is to concisely call out the public contract that will come along with this feature.
A public interface is any change to the following:
- Binary log format
- The network protocol and api behavior
- Any class in the public packages under clientsConfiguration, especially client configuration
- org/apache/kafka/common/serialization
- org/apache/kafka/common
- org/apache/kafka/common/errors
- org/apache/kafka/clients/producer
- org/apache/kafka/clients/consumer (eventually, once stable)
- Monitoring
- Command line tools and arguments
...
Relationships to other open KIPs
Because Diskless Topics are a new type of topic, they will necessarily interact with other features which concern topics. This may improve the benefits and user experience of both features.
- KIP-1279: Cluster Mirroring Diskless Topics may be efficiently mirrored by referencing existing data in object storage
- KIP-1272: Support compacted topic in tiered storage Diskless Topics can be compacted by offloading to Tiered Storage and performing compaction there.
- KIP-1269: Configurable number of batches to retain in broker Diskless Topics will incur higher produce latency, and well-pipelined producers may desire to have additional requests outstanding.
- KIP-1248: Broker support for remote tiered storage fetch from consumer and KIP-1254: Kafka Consumer Support for Remote Tiered Storage Fetch Diskless Topics will be offloaded to tiered storage, and lagging consumers on diskless topics may perform remote storage fetches to reduce broker bandwidth and improve scalability.
Public Interfaces
This KIP does not propose any new public interfaces; but its sub-KIPs will.
Compatibility, Deprecation, and Migration Plan
- What impact (if any) will there be on existing users?
- If we are changing behavior how will we phase out the older behavior?
...
- When will we remove the existing behavior?
This will be a backwards-compatible upgrade for existing Kafka Clusters. Diskless Topics will also support all existing APIs with the same external semantics as non-Diskless topics, including:
...
Specific compatibility, deprecation, and migration details will be covered in follow-up KIPs.
Test Plan
Describe in a few sentences how the KIP will be tested. We are mostly interested in system tests (since unit-tests are specific to implementation details). How will we know that the implementation works as expected? How will we know nothing broke?
There will be no modifications to existing tests for this KIP. Follow-up KIPs will have specific test plans.
Documentation Plan
What will the impact be on the documentation? List any affected areas/files.
There will be no modifications to the documentation for this KIP. Follow-up KIPs will have specific plans for changes to documentation.
Rejected Alternatives
...
Drop support for non-Diskless topics
...
