更多的是“最佳实践”问题,而不是技术问题,但我正在尝试找出组织节点/表达应用程序的最佳方式,以便进行最优化的扩展。目前,我们有一个快递js应用程序,它包含一个站点的多个“部分”。这包括聊天,我们的BoxNet api和其他一些领域。
将这些区域分成他们自己的快速应用程序以单独扩展每个区域,或者将它们全部保存在一个单独的快速应用程序中会更好吗?在应用程序的不同部分之间进行交谈是不存在的,因为它不是必需的。对我而言,分离这些应用程序的最佳理由是轻松扩展其中一个不同区域,而无需缩放未被击中的部分。我看到的负面影响将是一个潜在的管理噩梦或每个应用程序*规模的数据库的多个连接。思考?
谢谢,
ARIC
答案 0 :(得分:6)
将它们分开可以有意义,原因有两个:
例如,假设您有三个服务:一个是在Node.js事件循环中花费约50毫秒并且不访问数据库,文件等的简单服务;这一切都在记忆中。第二个服务在Node.js事件循环中花费约100ms,在DB / File I / O上等待约400ms。第三个服务在Node.js事件循环中花费约400ms,在DB上花费约100ms。因为事件循环本质上是一个队列,每次等待非阻塞I / O时,逻辑请求被抛回到堆栈的末尾,对于每个第二个服务,您的第三个服务可能会被减慢额外的约300毫秒。它与队列前面之间的队列,每个第一个服务约50ms(在分摊这些第一个服务中的2个之后)。
当对Node.js服务器的所有请求都有类似的处理和I / O延迟时,您会得到一致的响应时间给用户,这比随机更好>响应时间,因为前者意味着自适应流式音频/视频将以更高的比特率播放(例如),并且浏览具有一致“节奏”的网页的用户将很快自己进入节奏并且停止感知延迟(当然,除非太重要。)
您的数据库应该能够同时处理几十个连接,因此这不应该是一个问题;但是如果服务真的没有相互关联,你可能也希望将数据库分成不同的进程。