【问题标题】:RxJS share memory across node.js instances using RedisRxJS 使用 Redis 在 node.js 实例之间共享内存
【发布时间】:2017-07-15 07:34:02
【问题描述】:

我们正在开发一个使用 RxJS 创建事件处理器的项目。可以这么说,我们有一些“规则”,其中输入是从几个不同的来源提供的,并且必须根据输入高于设定值的次数生成输出(简单规则)。

现在,所有这些工作都没有任何问题,但我们希望将项目从测试版转移到生产。这意味着运行多个带有 RxJS 的 Node.JS 实例。

我们想知道 RxJS 是否可以使用 Redis 共享其内存。这样,当其中一个实例因任何原因死亡时,另一个实例可以从死者停止的地方接起。确保保留该值高于设定值的次数。

如果“规则”变得更加复杂并且数据量增加,这也可以让我们将负载分散到多个实例上。

RxJS 是否可以实现类似的功能,或者我们应该围绕它构建自己的管理?

【问题讨论】:

    标签: javascript node.js rxjs5


    【解决方案1】:

    据我所知,您不能在 node.js 进程之间共享内存。这样做是非常不安全的,因为那时您正在处理无法用 javascript 缓解的并发问题(当一个进程中断另一个进程时会发生什么?)

    也就是说,您可以使用 redis 来回传递消息。一般来说,我所做的就是建立一个工作队列作为redis队列。一些服务器推入工作队列。一些工人会从队列中拉出并处理数据并根据需要处理结果。

    一个具体的例子是生成出站电子邮件以响应某些 REST 事件(新帖子或其他)。 webapp 对已知队列执行LPUSH。工作进程可以使用BRPOPLPUSH 以原子方式从工作队列中拉出一个条目并将其推送到“进程中”队列中。发送邮件后,可以将其从处理中队列中删除。如果服务器崩溃或长时间超时,进程中队列中的条目可以被推回工作队列并重新尝试。

    但你不会在这里得到一个花哨的共享内存解决方案,至少我不这么认为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多