将Nodejs服务器扩展到多个系统?

Joi*_*nni 6 cluster-computing node.js server

我想使用express在nodejs中构建聊天服务器.我已经使用集群模块在多个核心之间扩展服务器但是如何扩展到不同的系统?

Fil*_*vić 3

由于 Node.js 不支持共享内存,因此如果您的应用程序可以在单个计算机中作为多个独立进程运行,则在多台计算机上分布 Node.js 进程可提供与使用集群在多个核心之间分布进程相同的体验\xe2\x80\x94系统,那么它也可以分布式地作为跨多个系统的多个独立进程运行。

\n\n

太好了,这样就少了一件需要担心的事情了!现在,有许多基础设施解决方案可以抽象出多个系统上运行的集群,但您的应用程序不会注意到您可能选择的任何一个。

\n\n

不过,在应用程序和任何单个进程的范围内,您关心的是发现外部服务、跨基础设施与进程通信以及与集群内的进程通信。同样,有许多解决方案可以满足您的应用程序需要满足的任何特定要求。

\n\n

到目前为止,Node.js 社区偏爱简单的方法,这些方法高度专门用于解决特定问题,然后不再妨碍您。例如:

\n\n
    \n
  • Web 套接字客户端和服务器:集群内的低延迟;当您只需发送一些数据并继续您的生活时,在整个网络上也可以很好地工作,但是如果您需要同步进程,例如发送一些数据,等待和空闲直到最终结果,那么事情就会变得非常缓慢回来
  • \n
  • Redis:集群易于设置,实例自行处理发现,足够的原子操作提供了在不同实例之间共享数据的可靠方法,并且发布-订阅支持提供了低延迟 IPC
  • \n
  • ZMQ:因其智能、高可用性连接而受到赞誉,您可以用几十行代码设计任何消息传递协议,下一个维护您的应用程序的人将能够推理出
  • \n
  • etcd:分布式、一致的键值存储;基础设施开销低,允许在顶部实现简单的服务发现,从而与现有的每个基础设施解决方案完美集成
  • \n
  • Consul:基于serf,就像 etcd 一样,但有很强的固执己见,提供了类固醇的服务发现,并具有许多额外的细节;如果您喜欢自己管理事情并且有时间预先投资,我强烈建议您进行进一步调查
  • \n
\n\n

虽然这当然没有涵盖所有可用的选项,但它应该足以让您朝着正确的方向前进。只需使用这些非常容易推理的简单构建块,您就应该能够跨多个系统分发应用程序,并在多个数据中心的多台机器上运行。

\n