【问题标题】:How to implement cache across multiple dynos如何跨多个测功机实现缓存
【发布时间】:2021-12-20 14:15:16
【问题描述】:

假设我在 Heroku 上托管了 Node/express 应用程序。我已经通过跨越多个测功机的服务器使用水平扩展来实现可扩展性。

我有 CMS 面板来控制应用程序的内容,它会更改数据库以添加内容,然后通过服务器 API 将内容呈现给最终用户。

我想要的是在后端 API 中添加缓存机制,以减少对 DB 的访问,因为我白天的应用用户流量很大。

解决方案最初可以通过在每个服务器实例 (dyno) 中设置的 node-cache 包设置一个简单的缓存。但是如何通过 CMS 刷新缓存。

如果我发送一个刷新缓存的请求,它每次只会触发一个测功机。因此,所有测功机的数据并不一致。

如何在所有测功机上触发刷新缓存或有更好的方法来处理缓存?

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: node.js express heroku caching


【解决方案1】:

您可以完全使用测功机之外的东西,而不是每个测功机缓存。 Herokuoffers several add-ons for common products。我从来没有用过node-cache,但是is described是这样的:

一个简单的缓存模块,具有setgetdelete 方法,工作起来有点像memcached。

这表明Memcached 可能是一个不错的选择。 Memcached Cloud addon 有一个免费的 30MB 层,MemCachier addon 有一个免费的 25MB 层。

在任何一种情况下,或者如果您选择将缓存托管在其他地方,或者即使您完全选择了其他工具,您也会将每个测功机连接到同一个缓存。这有几个好处:

  • 过期物品会影响所有测功机
  • 一旦通过一个测功机缓存了一个项目,它就已经在其他测功机的缓存中
  • 缓存内容在 dyno 重新启动后仍然存在,至少每天都会发生这种情况,因此您将有更少的失误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多