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.
翻译:在本文中, 我们展示了我们的LogPlayer的设计, 用于将 WAL 记录到后端存储碎片中的交易突变错容性交付给后端存储碎片。 LogPlayer 依靠 gRPC 进行无同步流流。 但是, 本文中提供的设计可以与其他非同步流流平台一起使用。 我们用 TLA+ 进行模拟检查LogPlayer 的正确性。 特别是, 我们的 TLA+ 规格显示, 即使在存在碎片或 LogPlayer 故障的情况下, LogPlayer 也保证将WAL 条目按部就班地交付到存储碎片中。 我们的实验显示, LogPlay 能够有效地交付次中空, 并且它比 Apache Kafka 设计有完全自动保证的 WAL 系统的效率要高得多 。