Impeller: Stream Processing on Shared Logs
Current stream processing systems provide exactly-once semantics using checkpointing or a combination of logging and checkpointing. These approaches can introduce high overhead, significantly increasing the latency for normal stream processing because maintaining exactly-once semantics requires coordination across distributed nodes and streams to capture a globally consistent state. We observe that modern distributed shared logs offer a promising solution for maintaining exactly-once semantics with a small overhead. We propose Impeller, a stream processing system that uses a distributed shared log for data storage and exactly-once processing. To maintain exactly-once semantics, Impeller includes a novel and efficient progress marking protocol based on string tags and selective reads in a shared log. The key idea is to leverage the log's record-tagging feature to atomically mark progress across all streams. The experiments over the NEXMark benchmark show that Impeller achieves 1.3× to 5.4× lower p50 latency, or 1.3× to 5.0× higher saturation throughput than Kafka Streams.
Authors
- Emmett Witchel (ORCID: https://orcid.org/0000-0002-1391-2880)
- Zhiting Zhu
- Zhipeng Jia
- Dixin Tang (ORCID: https://orcid.org/0000-0002-3316-6651)
- Newton Ni
Institutions
- Google (United States) (US)
- The University of Texas at Austin (US)
Publication Details
- Published
- 2025-03-26
- DOI
- https://doi.org/10.1145/3689031.3717485
- Primary Topic
- Algorithms and Data Compression
- Type
- article
- Field-Weighted Citation Impact
- 0.00