我试图在具有共享缓存的分布式系统中找到以下(和潜在解决方案)的技术术语:
您可以看到这可能是一个大规模的问题,如果不是两个请求,您有许多都会获得缓存未命中并尝试在缓存条目到期后立即生成缓存值。理想情况下,请求B有一种方法可以知道请求A正在为缓存生成一个值,并等到完成后再使用该值。
我想知道这种现象的技术术语,它是各种各样的缓存竞赛。
答案 0 :(得分:0)
这是一种雷鸣般的牧群
解决方案:当第一个请求A到来并填充一个标志时,如果请求B到来并找到该标志然后等待......在A将数据加载到缓存中之后,删除标志。
如果所有其他请求都被缓存加载事件唤醒,则会触发所有线程" Thundering Herd"。所以还需要关心解决方案。
例如在Linux内核中,只会唤醒一个进程,即使有几个进程依赖于事件。