【问题标题】:separating ZMQ socket from express app.js with mongodb使用 mongodb 将 ZMQ 套接字与 express app.js 分离
【发布时间】:2015-07-28 12:16:11
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript node.js mongodb express zeromq


    【解决方案1】:

    两部分答案:

    您可以并且也许应该将您的 ZMQ 消息处理与您的 Express 应用程序分开

    这是两个在功能上独立的操作,它们没有理由需要在同一个进程中,它们不需要相互访问,因此制作这些独立的进程没有任何害处并且可能是有益的。是否适合您取决于应用程序。

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

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

    【讨论】:

    • 这是我一开始就猜到的。但我对 JavaScript 的实际实现方式知之甚少,我认为单个文件可能会启动多个进程。谢谢!
    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2018-11-26
    相关资源
    最近更新 更多