Docker容器和Node.js集群

我有一个运行Node.js的api服务器,使用它的集群模块,testing看起来相当不错。 现在我们的IT部门想要转向使用Docker容器,但是我从来没有真正使用Docker容器。 但我有一个想法,Node.js应用程序在单个Docker进程中运行,所以集群模块不会是最好的,因为单个Docker进程可能是设置的一个慢点,直到请求在该进程中被分离由集群模块。

那么真正的运行Docker容器的集群是否比使用Node.js的集群模块更加重要呢?

如果我有一个容器集群,将使用Node.js的集群模块让我什么? api端点的返回时间less于0.5秒(通常比较less)。

我正在使用MySQL(相信它是一个单一的服务器,目前没有更多),所以应该没有任何理由使用数据完整性解决scheme。

你必须测量一下,但是我的预感会和节点的集群模块一起运行是值得的。 这将使您获得更多的CPU利用率,并减less额外的开销。 没有额外的容器来pipe理(开始,停止,监视)。 另外集群工人有一个高效的沟通机制。 在我看来,最合理的演变(不要跳过步骤)

  1. 1个容器,1个节点的过程
  2. 1个容器,多个集群节点工作者
  3. 几个容器,每个容器都有几个节点工人

我认为使用Docker的最佳解决scheme是尽可能减less每个容器的进程,因为容器是轻量级的; 您不希望进程尝试使用多个CPU。 所以,在容器中运行一个集群将不会增加任何价值,并可能导致延迟。

在这里https://medium.com/@CodeAndBiscuits/understanding-nodejs-clustering-in-docker-land-64ce2306afef#.9x6j3b8vw查德·罗宾逊用一般的术语解释了这个想法。

Kubernetes,Rancher,Mesos和其他容器pipe理层负责处理负载均衡。 他们提供了“调度”(将Docker容器切片移到不同的CPU和机器上,以便在整个集群中得到很好的使用)以及内部的“networking”(负载平衡入站请求到这些容器)层。