首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Nodejs服务器扩展到多个系统?

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

Stack Overflow用户
提问于 2015-09-29 04:29:29
回答 3查看 1.4K关注 0票数 6

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-29 07:56:59

由于Node.js不支持共享内存,所以跨多台机器分发Node.js进程提供了与使用集群跨多个核分发进程相同的体验--如果应用程序可以在单个系统中作为多个独立进程运行,那么它也可以作为多个独立进程在多个系统中运行。

太好了,那就少了一件事好担心了!现在,有许多基础设施解决方案可以抽象出在几个系统上运行的集群,但是您的应用程序对您可能选择的任何一个应用程序都不感兴趣。

但是,在应用程序和任何单个进程的范围内,您将关心的是发现外部服务、跨基础结构与进程通信以及与集群中的进程通信。同样,有许多解决方案将限制您的应用程序需要解决的任何特定需求。

到目前为止,Node.js社区一直倾向于采用高度专业化的简单方法来解决特定的问题,然后绕开你的路。例如:

  • Web套接字客户端和服务器:集群内的低延迟;当您只需要发送一些数据并继续您的生活时,它也可以在整个网络中很好地工作,但是如果您需要同步进程,比如发送一些数据、等待和闲置直到最终结果回来,它会把事情拖到爬行。
  • Redis:集群易于设置,实例自行处理发现,足够的原子操作提供了在不同实例之间共享数据的可靠方法,发布子支持为低延迟IPC提供了支持。
  • ZMQ:由于它是智能的、高度可用的连接,您可以设计出任何消息传递协议,其中包含几十行代码,下一个维护应用程序的人可以对此进行推理。
  • 蚀刻:分布式的、一致的键值存储;低的基础设施开销,允许在顶层实现简单的服务发现,这将与现有的每个基础设施解决方案很好地集成。
  • 领事:基于农奴,比如etcd,但是非常固执己见,提供了关于类固醇的服务发现,还有许多额外的细节;如果您喜欢自己管理事物,并且有时间提前投资,我将衷心建议进一步调查。

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

票数 3
EN

Stack Overflow用户

发布于 2015-09-29 07:11:15

如果您使用的是进程管理器(如PM2 ),它将负责在不同或相同的机器上启动节点应用程序,但要处理多台机器,您应该查看Puppet、Chef或Ansible to scale。如果您在AWS上,可以将EC2设置为自动执行。

票数 1
EN

Stack Overflow用户

发布于 2015-09-29 06:06:12

实际上,这个问题可以有多个答案,因为答案取决于您想要如何在节点之间进行通信,如何将任务分配给节点,以及如何管理失败。

您可能想研究其他集群管理器是如何工作的,然后尝试在应用程序中设计类似的东西。

很少有办法:

1)在前面使用负载均衡器,并在机器之间分配负载。我认为这是最简单的方法。

2)使用诸如RabbitMQ/ActiveMQ (或任何其他AMQP)系统的消息传递系统进行节点间通信,并允许有一个主节点池将任务分配给特定节点,并通过AMQP协议与节点通信。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32835708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档