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