【发布时间】:2021-02-17 21:20:52
【问题描述】:
Node.js 引入了集群模块来扩展应用程序以优化性能。我们让 Kubernetes 做同样的事情。
如果两者的目的相同,我会感到困惑?我的假设是集群最多可以产生 8 个进程(如果有 4 个 CPU 核心,每个核心有 2 个线程),并且在 Kubernetes 中没有这样的限制。
【问题讨论】:
标签: node.js kubernetes autoscaling
Node.js 引入了集群模块来扩展应用程序以优化性能。我们让 Kubernetes 做同样的事情。
如果两者的目的相同,我会感到困惑?我的假设是集群最多可以产生 8 个进程(如果有 4 个 CPU 核心,每个核心有 2 个线程),并且在 Kubernetes 中没有这样的限制。
【问题讨论】:
标签: node.js kubernetes autoscaling
Kubernetes 和 Node.js Cluster module 在不同级别上运行。
Kubernetes 负责编排容器(在许多其他事物中)。从它的角度来看,有需要分配的资源,以及需要或使用特定数量资源的部署。
Node.js 集群模块充当负载均衡器,分叉 N 次并在其拥有的各个进程之间传播请求,所有这些都在其环境(CPU、RAM、网络等)定义的限制内。
在实践中,Kubernetes 有可能生成额外的 Node.js 容器(水平扩展)。另一方面,Node.js 只能在其环境中增长(垂直扩展)。你可以阅读这个here。
虽然从性能角度来看,这两种方法可能相对相似(您可以在两种情况下使用相同数量的内核); 在单台机器上垂直扩展的问题是你失去了 Kubernetes 提供的高可用性方面。另一方面,如果您决定在不同的机器上部署多个 Node.js 容器,那么您对其中一个容器故障的容忍度要高得多。
【讨论】: