• 2024-08-12Go并发原语之SingleFlight
    引入如下图所示,可能存在来自桌面端和移动端的用户有 1000 的并发请求,同一时刻来访问的获取文章列表的接口,获取前20条信息,如果这时服务直接去访问redis出现 cachemiss, 那就会去请求1000次数据库,这时可能会给数据库带来较大的压力(这里的1000只是一个例子,实际上可能远大
  • 2024-05-17Singleflight(合并请求)
    简介看到一个有意思的库:SingleFlight是Go语言提供的一个扩展包。作用是当有多个goroutine同时调用同一个函数的时候,只允许一个goroutine去调用这个函数,等到这个调用的goroutine返回结果的时候,再把结果返回给这几个同时调用的goroutine,这样可以减少并发调用的数量。Singleflight