为什么集群NodeJS与Docker,以及Einhorn如何?

我一直很喜欢使用NodeJS来创build/编写应用程序function。 NodeJS对我来说很简单。

当考虑如何利用多核机器(然后考虑端口特定应用的额外复杂性 – 例如80/443上的web应用)时,我的原始解决scheme查看了NodeJS群集(或类似pm2),或许负载平衡器。

但是我想知道为什么会运行多个容器(以解决多核问题),然后在它们各自的外部端口之间进行负载均衡,会有什么坏处(或者不能工作的原因)? 过去,使用Einhorn还是比较好? Einhorn如何适合这个画面?

所以,问题是 – 仅针对NodeJS(因为我也在考虑Go) – 我是否正确地考虑“集群”与“具有负载平衡的多个docker集装箱”作为利用多个核心的两种可能方式?

作为一个单独的问题,Einhorn只是一种替代的第三方方式来实现NodeJS集群(也可以用来平衡Go应用程序的负载平衡)?

Docker正在开始采用越来越多的我们用来独立处理的集群和负载平衡方面, 直接或者通过惯用的使用模式。 以NodeJS为例,您可以在多个NodeJS容器之间有一个nginx或haproxy容器负载平衡。 我更喜欢使用像fig这样的东西,还要设置restart-policy,以便容器自动重启。 这在大多数情况下不需要其他集群解决scheme。