【发布时间】:2019-04-20 18:32:24
【问题描述】:
我在集群环境中运行 Nodejs Express 服务器。 服务器收到数百个对同一资源的请求。
在处理对该资源的请求时,我对另一个服务(例如服务 A)进行异步调用,等待其结果,在内存中记住对服务 A 的承诺调用并返回对请求的响应。
因为我运行的是集群服务器,其他工作人员开始接受对同一资源的请求。而且因为服务 A 的记忆承诺是每个工人的承诺,并且承诺尚未解决,所以我最终对服务 A 的同一资源进行了多次调用。
有没有办法可以在仍然使用集群环境的同时防止对服务 A 进行这些重复调用。
【问题讨论】:
-
你能否通过 Redis 之类的服务将 Promise 结果缓存到内存中,然后任何时候你的自治工作人员收到对该资源的请求,只需执行对 Redis 的键查找调用,以查看是否有其他工作已经缓存了导致记忆?
标签: node.js concurrency node-cluster