node.js - 在同一个 Kubernetes Node 上多次复制 Node.js Kubernetes 服务器 Pod 是否有意义?

标签 node.js kubernetes google-kubernetes-engine scaling

我们有一个处理请求的应用程序,该请求可能需要几分钟才能返回响应。将此应用程序放在一个 Pod 中并在同一 Node 中多次复制是否有意义,这样我们就可以在新线程上处理每个请求(考虑到 NodeJS 是单线程的)?

最佳答案

这里的用例相当不稳定。根据您的说法,您的应用程序是单线程应用程序,只有在前一个 pod 繁忙或有锁的情况下,您才希望在触发新请求后立即增加 pod,简单来说,一个新的 pod 会附带一个新的 pod请求前一个 pod 是否繁忙。

Kubernetes 是容器的编排器,在 kubernetes 上部署整体应用程序不仅会降低 kubernetes 的性能,还会因部署和自动化问题带来大量开销。

此外,当您脱离整体(=单线程)进入面向(微)服务的架构时,您可以为每个服务拥有一个独立的事件循环,这是一件好事。因为每个 Node 进程都将在容器内独立运行!

我建议您考虑应用程序的架构设计,将它们分解为多线程,然后重新访问 kubernetes。

但是引用相同的https://www.dataversity.net/use-kubernetes-deploy-monolithic-apps/# Linux shell 是 Linux shell 是 Linux shell。您可以让它工作,下面的内容可能会有所帮助。

战略解决方案:您可以使用--max-replicas=xx标志为您的部署声明一个HPA[Horizo​​ntal Pod Autoscaler] >,然后您需要使用请求指标编写一个作业,每当有对服务的请求时,部署应该自动缩放并同样缩小。此外,一旦请求结束,您就必须缩小规模。您应该使用 HPA 的 v2beta2 apiVersion,因为它允许此类指标。

此外,我认为您必须使用 HPA 的 v2beta2 apiVersion,因为您必须将请求计数保持为一元,以便请求不会生成 5XX 因为如果未设置此类指标,kubernetes 服务会将请求发送到同一个 pod。

关于node.js - 在同一个 Kubernetes Node 上多次复制 Node.js Kubernetes 服务器 Pod 是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62049449/

相关文章:

javascript - JS 引擎或浏览器/Node 外部 API 如何安排 promise 回调与 setTimeout?

kubernetes - 如何创建由预先存在的 EBS 卷支持的 PVC/PV?

kubernetes - Kubernetes 中的 etcd 需要单独的 CA?

javascript - 获取 TypeError : Cannot call method 'releaseConnection' of null in mysql node. js

javascript - mongodb 的结果为 null,但 if (!result) 未捕获它

node.js - 如何让 Meteor shell 输出更详细?

deployment - Kubernetes Ingress 白名单源范围 允许所有 IP

java - Kubernetes 上微服务之间集群间通信的最佳方式?

kubernetes - rfc7231#section-6.5.1 Kubernetes上的dotnet核心入口 Controller api访问问题

kubernetes - 如何 "OR"- 根据外部指标匹配 Horizo​​ntalPodAutoscaler 中的 metricSelector