我想使用表达式在nodejs中构建聊天服务器,我已经使用集群模块在多个核之间扩展服务器,但是如何扩展到不同的系统?
发布于 2015-09-29 07:56:59
由于Node.js不支持共享内存,所以跨多台机器分发Node.js进程提供了与使用集群跨多个核分发进程相同的体验--如果应用程序可以在单个系统中作为多个独立进程运行,那么它也可以作为多个独立进程在多个系统中运行。
太好了,那就少了一件事好担心了!现在,有许多基础设施解决方案可以抽象出在几个系统上运行的集群,但是您的应用程序对您可能选择的任何一个应用程序都不感兴趣。
但是,在应用程序和任何单个进程的范围内,您将关心的是发现外部服务、跨基础结构与进程通信以及与集群中的进程通信。同样,有许多解决方案将限制您的应用程序需要解决的任何特定需求。
到目前为止,Node.js社区一直倾向于采用高度专业化的简单方法来解决特定的问题,然后绕开你的路。例如:
虽然这当然没有涵盖所有可用的选项,但它应该足以让您朝着正确的方向前进。由于这些简单的构建块非常容易推理,您应该能够在多个系统上发布应用程序,并在多个数据中心中跨多台计算机运行。
发布于 2015-09-29 07:11:15
如果您使用的是进程管理器(如PM2 ),它将负责在不同或相同的机器上启动节点应用程序,但要处理多台机器,您应该查看Puppet、Chef或Ansible to scale。如果您在AWS上,可以将EC2设置为自动执行。
发布于 2015-09-29 06:06:12
实际上,这个问题可以有多个答案,因为答案取决于您想要如何在节点之间进行通信,如何将任务分配给节点,以及如何管理失败。
您可能想研究其他集群管理器是如何工作的,然后尝试在应用程序中设计类似的东西。
很少有办法:
1)在前面使用负载均衡器,并在机器之间分配负载。我认为这是最简单的方法。
2)使用诸如RabbitMQ/ActiveMQ (或任何其他AMQP)系统的消息传递系统进行节点间通信,并允许有一个主节点池将任务分配给特定节点,并通过AMQP协议与节点通信。
https://stackoverflow.com/questions/32835708
复制相似问题