使用 mongodb 将 ZMQ 套接字与 express app.js 分开

separating ZMQ socket from express app.js with mongodb

我正在编写一个 Express 应用程序,它应该收集通过 ZMQ 从远程计算机发送的一些数据,并使用接收到的信息更新 MongoDB 数据库。

更新每 5 分钟发送一次,编码的 JSON 权重小于 1 KB。尽管如此,我注意到当 app.js 解析 JSON 并写入数据库时​​,客户端请求 运行 速度较慢。

我应该将 ZMQ 套接字代码放在 app.js 中(选项 A),还是只使用一个单独的文件(选项 B)?在选项 B 的情况下,我可以做一个 bash 老太婆来避免繁重的 CPU 活动等待(因为每 5 分钟更新一次)。

两部分答案:

您可以而且也许应该将 ZMQ 消息处理与 Express 应用分开

这是两个功能上独立的操作,它们没有理由需要在同一个进程中,它们不需要相互访问,所以创建这些单独的进程没有坏处,而且可能有好处。它是否适合您取决于应用程序。

没有理由每 5 分钟处理一次 1kb json 结构会对性能产生显着影响

...除非您的客户请求量相当高。它 应该 只会引入几毫秒的延迟,在最坏的情况下,在正常工作负载下,这只会影响单个请求,达到人类永远不会注意到的程度。如果您的请求并发性很高,那么该延迟会产生影响多个请求的轻微多米诺骨牌效应。否则,您应该考虑您的架构是否存在一些可以解决的低效问题。