在 NodeJs 中处理对工作进程的响应

Handling Response on a Worker Process in NodeJs

我正在尝试按照 NodeJs 中的命令查询责任分离模式 (CQRS) 设计一项服务。为了处理隔离,我采用以下方法:

  1. 为查询和执行命令创建单独的 worker
  2. 使用 REST 公开它们 API

REST API 是用 ExpressJs 设计的。所有以 'update'、'create' 和 'delete' 关键字开头的端点都被视为命令;所有带有 'get' 或 'find' 的端点都被视为查询。

当请求到达其指定的处理程序时,会发生以下情况之一:

  1. 如果是命令,则将任务委托给工作进程后立即发送响应;当主进程从工作进程收到完成消息时,通过生成适当的事件来通知其他服务。

  2. 如果是查询,则响应由指定的工作人员处理,该工作人员可以使用作为参数传递的数据库连接的引用来获取和发送查询结果。

对于上面的 (2),我正在尝试创建一种机制,以某种方式 "passes" 将响应对象发送给工作人员,然后工作人员可以完成请求。这可以通过 "cloning" 响应对象并将其作为普通参数传递来完成吗?如果不是,实现此目标的首选方法是什么?

我认为您最好在 (2) 中将查询传递给工作进程,该工作进程 returns 到主进程,然后主进程发回请求。

首先,你并不是真的想把worker进程"access"给到外面。他们应该都是内部工作者,由主进程管理。

其次,Express 服务器的工作是接收请求,用它们做一些事情,然后 return 一个结果。尝试将通信传递给工作人员似乎过于复杂。

如果您真的担心您的 Express 服务器会被请求淹没,您应该考虑 Docker 来创建 "swarm" 个 express 实例。