希望提高阻塞事件循环的慢端点的性能。使用由 Heroku 托管的 Postgres 数据库。
Heroku 的文档建议使用 Redis 实现后台作业以提高性能。这似乎需要在我们当前的 Postgres 数据库之上支付和设置 Redis,以及为工作进程本身设置 Bull。
https://devcenter.heroku.com/articles/node-redis-workers
这位评论者提出使用 Nose.js 集群作为可能的解决方案。
Using worker/background processes in node.js vs async call
我们目前没有使用 Redis,如果有更简单(更便宜)的解决方案,我宁愿实现它。使用 Node 工作线程会完成与使用 Bull 设置 Redis 相同的事情吗?很大一部分计算时间花在了这个端点上,我们已经努力通过索引和重组来进行改进。
最佳答案
看起来 Redis 有很大的优势:它将缓存数据和任何类型的错误/部署/等等。不会防止丢失数据,这是 node.js 工作人员无法做到的,要完成同样的工作,您需要使用 RabbitMQ 之类的东西来存储您的作业。如果您有时间和资源来重新实现 Redis,或者这对您来说是极端情况 - 尝试使用 worker,否则某些第 3 方工具会为您完成它而不会让您头疼,为什么您会遇到一些数据不一致的问题。此外,您不能使用 worker 并创建单线程应用程序并使用 kubernetes
关于node.js - 使用 Node 集群与 Redis Bull 后台进程来提高慢速端点性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56989104/