LogPlayer: Fault-tolerant Exactly-once Delivery using gRPC Asynchronous Streaming
In this paper, we present the design of our LogPlayer that is a component responsible for fault-tolerant delivery of transactional mutations recorded on a WAL to the backend storage shards. LogPlayer relies on gRPC for asynchronous streaming. However, the design provided in this paper can be used with other asynchronous streaming platforms. We model check the correctness of LogPlayer by TLA+. In particular, our TLA+ specification shows that LogPlayer guarantees in-order exactly-once delivery of WAL entries to the storage shards, even in the presence of shards or LogPlayer failures. Our experiments show LogPlayer is capable of efficient delivery with sub-millisecond latency, and it is significantly more efficient than Apache Kafka for designing a WAL system with exactly-once guarantee.
READ FULL TEXT