gpt4 book ai didi

javascript - 如何避免 Node.js & MongoDB & Redis 堆栈中的狗桩效应?

转载 作者:可可西里 更新时间:2023-11-01 11:46:58 27 4
gpt4 key购买 nike

当某些缓存值过期或由于某种原因将生成新的缓存并且我们在不存在缓存时有巨大的流量时,MongoDB 和响应时间将承受沉重的负载显着增加。这通常称为“狗桩效应”。创建缓存后一切正常。

我知道这是一个非常普遍的问题,适用于所有使用数据库和缓存系统的 Web 应用程序。

Node.js & MongoDB & Redis 堆栈中,应该怎么做才能避免狗桩效应?最佳做法和常见错误是什么?

最佳答案

防止狗堆积的一种相当成熟的方法是保持“锁”(例如在 Redis 中)以防止缓存填充逻辑多次触发。第一次调用 fetcher(对于给定的内容),(为它)获取锁并设置为过期(例如使用 SET ... NX EX 60)。对该内容的提取器的任何后续调用都将无法获得锁定,因此只有一只狗会得到一堆。

您可能想要实现的另一件事是对抓取程序进行某种速率限制,无论内容如何。使用 Redis 也很容易做到这一点 - 请随意查找或提出其他问题 :)

关于javascript - 如何避免 Node.js & MongoDB & Redis 堆栈中的狗桩效应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667647/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com