例如,假设用户请求处理某些音频文件,当然nodejs无法进行密集处理,因此应将其卸载到工作进程。
这些工作者可能需要能够发布/转发事件,在死亡时重新生成事件,并且队列应该能够负载平衡,维护缓存并保持活动状态。我见过0MQ,其他人喜欢它,但我不确定如何将它集成到网络应用中......
创建和管理这些工作流程的行业标准方法是什么?使用的工具是什么?
编辑:还有一件事:说音频处理需要很长时间,请求超时。有没有办法绕过那个而不是增加超时?
编辑2:工人,我的意思是像Heroku工人dynos - 他们是如何工作的?
答案 0 :(得分:1)
就个人而言,我可能会做一些事情,比如将任务添加到redis数据库。然后另一个进程(可能用不同的语言编写,如果它处理很重)在redis数据库中订阅该密钥并启动添加到其中的任务。它本身甚至可以管理一些工作线程。
对于超时,您可以使用一个请求仅启动任务,另一个请求获取结果(如果结果不可用则使用longpolling,或者甚至更好的服务器 - 通过websockets推送)。