具有弹性 beanstalk 自动缩放的共享 node.js 全局变量

Posted

技术标签:

【中文标题】具有弹性 beanstalk 自动缩放的共享 node.js 全局变量【英文标题】:Shared node.js global vars with elastic beanstalk autoscaling 【发布时间】:2017-05-28 08:37:09 【问题描述】:

我有一个在配置了自动缩放的弹性 beanstalk 中运行的 node.js 应用程序。假设我有以下代码:

var app = express();

var getCounter = 0;

app.get('*', function(req, res)
  getCounter = getCounter + 1;
  res.send("That was get request " + getCounter);
);

由于我希望 getCounter 在我的所有实例中都相同,除了在我的数据库中之外,我还有哪些选项可以将其存储?存储在数据库中感觉太“短暂”。这会是放入缓存的候选者吗?

【问题讨论】:

【参考方案1】:

您需要一个持久性数据库。其他一切都是徒劳的。如果您不将其保存在所有进程都可以访问的地方,那么它就是本地数据,并且很快就会失去同步。全局变量是每个进程的,而不是系统范围的。

您可以使用任何您想要的东西,例如 Redis、像 Memcache 这样的分布式缓存,或者如果您愿意,可以使用来自 Amazon RDS 的更全功能的数据库。如果没有某种集中化,就没有简单的方法来共享数据。

【讨论】:

以上是关于具有弹性 beanstalk 自动缩放的共享 node.js 全局变量的主要内容,如果未能解决你的问题,请参考以下文章

弹性豆茎自动缩放期间的问题

如何在自动缩放的弹性 beantalk 实例中更新文件

AWS cloudwatch 自定义指标作为弹性 beantalk 自动缩放触发器

您如何与部署为弹性 beanstalk 上的工作人员的 docker 容器共享特权信息?

具有弹性 IP 的 Amazon EC2 自动扩展实例

将文件添加到 AWS Elastic Beanstalk 实例