我们正在为移动应用程序建立后端体系结构以进行连接,但是我们需要一些帮助。我们的应用程序旨在模仿您在熟食店或药房看到的“带号码”票。用户将使用我们的移动应用程序将请求发送到我们的节点控制器,然后我们的节点控制器将以现货号进行响应。
我们目前在Amazon Elastic Beanstalk上设置了节点控制器,并已启用负载平衡以处理请求激增。我们的问题是:如何在节点控制器的多个实例之间持久保存spotNumber
?我们现在已经将其构建为一个从1开始并随每个请求递增的局部变量,但是如果AWS启动我们的节点控制器的新实例以处理增加的流量,该变量是否会持续存在?如果没有,那么在服务器的所有潜在实例中保留spotNumber
的最佳实践是什么?
提前谢谢!
答案 0 :(得分:1)
使用数据库。
显然,您不能将值存储在节点应用程序中,这不仅是因为扩展,而且是为了防止如果应用程序意外关闭而导致数据丢失。
听起来好像您还没有数据库,所以DynamoDB可能是一个不错的选择,只要您的唯一用例是在应用程序之间共享计数器。您可以找到示例here。
您也可以使用Redis on Elasticache,但我认为对于单个计数器来说这太过分了。
答案 1 :(得分:0)
保持不同规模的准确计数器可能需要不同的实现。在小规模上,应用程序中的简单会话变量和锁定逻辑就足够了。但是,在更大范围内,会话同步和锁定可以通过数据库更好地管理。特别是对于您的情况,DynamoDB conditional writes或Redis counters似乎很有用。但是,请保持您的要求简单明了,大规模管理计数器可能需要使用带有有趣名称的算法和数据结构,例如HyperLogLog。