一个惊群问题的处理

在一个 side project 里遇到这样一个问题:后台要处理客户端对千万级远程数据集的查询,而上游接口限速严重。为了避免频繁撞 429,尝试全量拉取为本地缓存同时作为本地主库用于索引。但部分数据会随机更新,需要按 TTL 回源刷新。

关键在于,一次 dry run 导入的数据时间分布很集中,导致后续 TTL 也集中到期,形成批量回源再次撞限流。这是典型的惊群,但它不是多 worker 监听 socket 阻塞 accept 那种内核唤醒型惊群,而是过期时间对齐导致的回源惊群。

Read more