0

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

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

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

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

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

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

4

1 回答 1

0

您可以完全使用测功机之外的东西,而不是每个测功机缓存。Heroku为常见产品提供了几个附加组件。我从未使用过node-cache,但它是这样描述的:

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

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

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

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