Node.js 在AWS上放大nodejs应用程序

Node.js 在AWS上放大nodejs应用程序,node.js,amazon-web-services,amazon-ec2,Node.js,Amazon Web Services,Amazon Ec2,我有在AWS EC2上运行的nodejs应用程序 我想通过创建更多的实例来扩展它 我不太明白如何在网络方面做到这一点 假设我创建了另一个实例,它正在侦听另一个端口。 我是否应该将客户端更改为从两个不同的端口请求?我相信这可能会导致DB的比赛条件 我是否应该侦听EC2机器上的一个端口并将请求定向到其中一个实例?在这种情况下,端口将一直处于繁忙状态,直到实例处理完请求,而不是与另一个实例并行处理请求 有没有人能给我提供一些关于这个主题的指南或文档?在基本层面上,您将有多个Node.js应用程序实例,

我有在AWS EC2上运行的nodejs应用程序

我想通过创建更多的实例来扩展它

我不太明白如何在网络方面做到这一点

假设我创建了另一个实例,它正在侦听另一个端口。 我是否应该将客户端更改为从两个不同的端口请求?我相信这可能会导致DB的比赛条件

我是否应该侦听EC2机器上的一个端口并将请求定向到其中一个实例?在这种情况下,端口将一直处于繁忙状态,直到实例处理完请求,而不是与另一个实例并行处理请求


有没有人能给我提供一些关于这个主题的指南或文档?

在基本层面上,您将有多个Node.js应用程序实例,连接到一个公共数据库后端。(您的数据库也应该集群化,但这是另一篇文章的主题。)

如果您已经遵循了最佳实践,那么一个请求就是一个响应,后续请求是否落在不同的应用程序服务器上并不重要。也就是说,客户可以在任何时候攻击其中任何一个,并且不会有任何副作用。如果没有,您将需要某种服务器固定(通常通过cookie或类似方法完成),以确保客户端始终位于同一应用服务器上

负载平衡的最简单方法是让客户端连接到一个主机名,并将主机名解析的循环方式连接到多个主机。这将分散周围的流量,但不一定正确。例如,一台主机上的特定命令或问题可能意味着它只能处理5个请求,而其他服务器可以处理5000个请求。大多数云提供商都有负载平衡管理。当然有


由于您已经在AWS上,我建议您通过Elastic Beanstalk部署应用程序。它根据配置自动启动/拆除旋转。您当然可以推出自己的解决方案,但使用已有的解决方案可能更容易。负载平衡器是用Beanstalk配置的。

在基本级别,您将有多个Node.js应用程序实例,连接到公共数据库后端。(您的数据库也应该集群化,但这是另一篇文章的主题。)

如果您已经遵循了最佳实践,那么一个请求就是一个响应,后续请求是否落在不同的应用程序服务器上并不重要。也就是说,客户可以在任何时候攻击其中任何一个,并且不会有任何副作用。如果没有,您将需要某种服务器固定(通常通过cookie或类似方法完成),以确保客户端始终位于同一应用服务器上

负载平衡的最简单方法是让客户端连接到一个主机名,并将主机名解析的循环方式连接到多个主机。这将分散周围的流量,但不一定正确。例如,一台主机上的特定命令或问题可能意味着它只能处理5个请求,而其他服务器可以处理5000个请求。大多数云提供商都有负载平衡管理。当然有


由于您已经在AWS上,我建议您通过Elastic Beanstalk部署应用程序。它根据配置自动启动/拆除旋转。您当然可以推出自己的解决方案,但使用已有的解决方案可能更容易。负载平衡器是用Beanstalk配置的。

您可以从解释Node.js应用程序的实际功能开始。客户是什么?HTTP客户端?很抱歉,这是一个MERN应用程序。听起来你想使用node.js集群和粘性负载平衡器。你可以从解释node.js应用程序的实际功能开始。客户是什么?HTTP客户端?很抱歉,这是一个MERN应用程序听起来你想使用node.js集群和粘性负载平衡器。它们都连接到机器上运行的MongoDB。我喜欢cookie的想法,所以你的意思是每个客户端都将由cookie中定义的一个特定服务器处理,对吗?我不太明白你说的几个主持人是什么意思?您是指多台EC2计算机吗?@EdgarBarber您将运行一个数据库实例(或一组实例)并从应用程序服务器连接到它。@EdgarBarber我没有说几个主机名,我说的是几个主机。那可能是一台EC2机器,是的。所以假设我在我的nodejs实例上设置了端点。正在从两个不同的客户端调用此终结点。我想通过我的两台服务器并行处理请求。我不明白的是,当第一个请求仍在处理中时,如何处理第二个请求?假设我使用flask编写了一个python服务器来平衡它的负载,当第一个请求仍由其中一个实例处理时,我是否可以获得第二个请求?@edgarber您可以使用单个Node.js实例来完成您的示例。不需要两个人。Node.js可以并行处理请求。您的数据库也可以,因为您只是获取数据。它们都连接到机器上运行的MongoDB。我喜欢cookie的想法,所以你的意思是每个客户端都将由cookie中定义的一个特定服务器处理,对吗?我不太明白你说的几个主持人是什么意思?您是指多台EC2计算机吗?@EdgarBarber您将运行一个数据库实例(或一组实例)并从应用程序服务器连接到它。@EdgarBarber我没有说几个主机名,我说的是几个主机。那可能是一台EC2机器,是的。所以假设我在我的nodejs实例上设置了端点。正在从两个不同的客户端调用此终结点。我想通过我的两台服务器并行处理请求。我不明白的是,当第一个请求仍在处理中时,如何处理第二个请求?假设我使用flask编写了一个python服务器来平衡它的负载,那么在