为限流 API 设计不丢失数据的轮询管道 笔记

为限流 API 设计不丢失数据的轮询管道

任何从他人 API 摄取数据的系统,最终都会编写一个轮询器。它最初只是 cron 任务中的十五行代码:访问端点,与上次时间戳对比,插入新增数据。它一开始就能正常工作,而这恰恰是问题所在——它在开始丢失记录后,仍看似持续运行了相当长一段时间。我维护着一层持续轮询公开讨论类 API 的数据摄取层,而“轮询器正在运行”与“轮询器数据正确”之间的差距,比我预期的要长得多。以下内容是造成真实数据丢失的四种故障模式,以及修复它们的模式。