我正在开发一个流星应用程序,我害怕的一件事是没有人知道如何让一个应用程序在多台机器上运行。
亚马逊刚刚宣布:http ://aws.amazon.com/about-aws/whats-new/2013/03/11/announcing-aws-elastic-beanstalk-for-node-js/
这会通过提供一个基本上无限大的机器来解决这个问题吗?还是我完全误解了 AWS?还是因为没有流星应用程序会使用超过 30GB 的 RAM 而担心这一点很荒谬?
对不起初学者的问题。
我正在开发一个流星应用程序,我害怕的一件事是没有人知道如何让一个应用程序在多台机器上运行。
亚马逊刚刚宣布:http ://aws.amazon.com/about-aws/whats-new/2013/03/11/announcing-aws-elastic-beanstalk-for-node-js/
这会通过提供一个基本上无限大的机器来解决这个问题吗?还是我完全误解了 AWS?还是因为没有流星应用程序会使用超过 30GB 的 RAM 而担心这一点很荒谬?
对不起初学者的问题。
Amazon Beanstalk 使用预定义的 CloudFormations 模板以及一些预配置的 AMI,让您可以轻松部署应用程序。不同的风格,这个新的节点之一就是其中之一,是预先配置的技术堆栈来使用。
模板本身并不能解决流星水平缩放问题。也就是说,在多台机器上运行流星。为此,您需要让流星保持其 WebSocket 状态,以便集群中的其他服务器可以共享它。
Amazon 弹性负载均衡器 (ELB) 允许 TCP 流量,这是扩展 WebSocket 流量所需的。ELB 还支持会话关联或粘性会话(为此有很多名称)。然而,这还不够。想象一下,我登录到一台服务器,然后我就呆在那里。然后您登录到另一台服务器并留在那里。现在我们有两个不同的服务器,分别与我们交谈。但是,如果这些服务器共享 WebSocket 状态。
SocketIO + Redis 可以通过 RedisStore 一起使用,但目前流星不支持。我希望他们最终会支持这一点,因为可行的生产就绪产品需要它——除非他们想出一些其他的魔法来实现同样的目标。
你担心它是对的,因为服务器有时会死掉,尤其是在虚拟化环境中。集群不仅关乎性能,还关乎高可用性。
我认为modules.io可能会因为它们的“会话关联”特性而工作得最好
“我们的负载平衡器确保当用户点击伺服器时,他们会被发送回同一个伺服器以进行所有后续活动。这通过允许内存状态信息降低了应用程序的复杂性。”
但是,我实际上并没有尝试在那里部署流星应用程序。
他们还有一篇专门关于流星的博客文章