希望为阻塞事件循环的慢速端点提高性能。使用Heroku托管的Postgres数据库。
Heroku的文档建议使用Redis实现后台作业以提高性能。这似乎需要付费并在我们当前的Postgres数据库之上设置Redis,以及为worker进程本身设置Bull。
https://devcenter.heroku.com/articles/node-redis-workers
此评论者提出使用Nose.js群集作为可能的解决方案。
Using worker/background processes in node.js vs async call
我们目前不使用Redis,如果有一个更简单(更便宜)的解决方案,我宁愿实现。使用Node worker线程会完成与使用Bull设置Redis一样的事情吗?在此端点上花费了大量的计算时间,我们已经在努力通过索引编制和重组来进行改进。
答案 0 :(得分:0)
像Redis这样的外观具有显着的优点:它将缓存数据以及任何类型的错误/部署/等。并不能防止丢失数据(这是您使用node.js工作者无法做到的),要完成此任务,您需要使用RabbitMQ之类的东西来存储作业。如果您有足够的时间和资源来重新实现Redis,或者这是您的边缘情况-尝试使用worker,否则某些第三方工具将为您做到这一点而不会令人头痛,为什么您会有一些数据不一致的问题。另外,您不能使用worker来创建单线程应用,并使用git clone