golang singleflight 用武之地
缓存更新问题 当缓存失效时,需要去数据存储层获取数据,然后存储到缓存中。 通常缓存更新方案: 业务代码中,根据key从缓存拿不到数据,访问存储层获取数据后更新缓存 由专门的定时脚本在缓存失效前对其进行更新 通过分布式锁,实现只有一个请求负责缓存更新,其他请求等待:一种基于哨兵的缓存访问策略 服务中某个接口请求量暴增问题 比如某个帖子突然很火,帖子下有非常多的跟帖回复,负责提供帖子内容、回帖内容的接口,对于该帖子的请求量就会非常多。 如果每个请求都落到下游服务,通常会导致下游服务瞬时负载升高。如果使用缓存,如何判断当前接口请求的内容需要缓存下来?缓存的过期、更新问题? golang singleflight 该库提供了一个简单有效的方案应对上面提到的问题,初次见识到 singleflight ...阅读全文