我们正在开发一个使用RxJS创建事件处理器的项目。我们有一些“规则”,可以说,从几个不同的源提供输入,并且必须根据输入高于设定值(简单规则)的次数生成输出。
现在,所有这些都没有任何问题,但我们希望将项目从测试版转移到生产版。这意味着在其上运行带有RxJS的Node.JS的多个实例。
我们想知道RxJS是否可以使用Redis共享其内存。这样,当其中一个实例因任何原因而死亡时,另一个实例可以在死亡停止的地方找到。确保保留值高于设定值的次数。
如果“规则”变得更复杂并且数据量增加,这也可以让我们将负载分散到多个实例上。
RxJS是否可以这样,或者我们应该围绕它建立自己的管理?
答案 0 :(得分:0)
据我所知,你不能在node.js进程之间共享内存。这样做会非常不安全,因为那样你就会处理不能用javascript缓解的并发问题(当一个进程中断另一个进程时会发生什么?)
那就是说,可以使用redis来回传递消息。通常,我所做的是将工作队列建立为redis队列。一些服务器进入工作队列。一些工作人员将从队列中提取并处理数据并根据需要处理结果。
一个具体的例子是生成出站电子邮件以响应某些REST事件(新帖或其他)。 webapp对已知队列执行LPUSH。工作进程可以使用BRPOPLPUSH以原子方式从工作队列中提取条目并将其推送到进程中。队列。发送邮件后,可以将其从进程中队列中删除。如果发生服务器崩溃或长时间超时,可以将进行中队列中的条目推回到工作队列中并重新尝试。
但是你不会在这里得到一个奇特的共享内存解决方案,我至少不会想到。