gpt4 book ai didi

node.js - 事件驱动处理架构建议

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:49 26 4
gpt4 key购买 nike

我目前正在开发一个项目,需要实时执行文件处理。这是我想要实现的工作流程

a. User requests a file to be processed to Server A (web)
b. Server A forwards the request to Server B
c. Server B finishes and signals Server A that it’s done
d. Server A signals the user that the file is ready (web)

Simple Event Arch

我在寻找什么?我需要找到一种简单的事件驱动方式在服务器 A 和服务器 B 之间进行通信(即步骤 b 和 c)。仅供引用,我将使用 socket.io 通过网络在步骤 a 和 d 上与用户进行通信。

我将使用的环境是运行 Node.js 服务的 Ubuntu 14.04 服务器(请注意,解决方案不必严格是 Node,只要有一个接口(interface)即可)。

看起来足够简单吗?这就是事情变得复杂的地方。每组服务器(现在将它们视为 Web 服务器与处理服务器)都将在云中进行复制(每个服务器有很多)。需要注意的是,当处理服务器完成对文件的处理时,它必须向所有 Web 服务器发出文件已准备就绪的信号。为什么?每个网络服务器可能已经服务了正在等待同一文件的请求。

Cloud event arch

我需要一个能够在最快的时间内实现此工作流程(即事件驱动而不是轮询)的解决方案,该解决方案与 Node.js 交互并在 Ubuntu 上运行。有什么想法吗?

最佳答案

让您的生活更轻松的一种方法可能是使用 Redis 与 Web 服务器进行通信,了解文件何时加载并准备就绪。 Redis 内置了 channel 订阅/消息传递,并且很容易与 Node.js 一起使用

因此,当文件请求进来时,如果Web服务器之前从redis听说文件已加载,则可以获取文件并返回,否则通知后端处理文件,并等待来自redis channel 的通知

关于node.js - 事件驱动处理架构建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25651366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com