2023-09: 我是如何构建 backon 的?
💡
原文中文,约4600字,阅读约需11分钟。
📝
内容提要
backon 是一个 Rust 错误重试库,本文分享了在实现它的过程中一些技巧:使用 Iterator<Item = Duration> 来表示 backoff,定义 Retryable trait 为 FnMut() -> Fut 实现,实现 Future trait,以及为同步函数实现 BlockingRetryable trait。
🎯
关键要点
- backon 是一个 Rust 错误重试库,旨在提供一种用户友好的重试机制。
- 实现过程中需要提供 backoff 机制,以实现指数退避和 jitter 特性。
- 使用 Iterator<Item = Duration> 来表示 backoff,使其易于理解和实现。
- 定义 Retryable trait 为 FnMut() -> Fut 实现,以支持重试 async 函数。
- 实现 Future trait 以支持重试机制,并处理错误状态。
- 引入 BlockingRetryable trait 以支持同步函数的重试。
- 使用 Rust 的泛型机制来实现自定义 trait,增强库的功能。
- 希望通过 backon 的设计,激励开发者设计更友好的库 API。
➡️