我最近开始探索 Knative,并试图了解并发和自动缩放的工作原理。我理解(目标)并发是指可以为给定版本同时安排到单个 Pod 的请求数。
但是,我不确定我是否理解并发值大于 1 的影响。当 N 个请求被安排到同一个 Pod 时会发生什么?是否会按 FIFO 顺序一次处理一个?是否会产生多个线程以并行服务它们(可能竞争 CPU 资源)?
我很想设置 concurrency=1 并依靠自动缩放来处理通过多个 Pod 的多个请求,但我想这不是最好的做法。
提前致谢
我最近开始探索 Knative,并试图了解并发和自动缩放的工作原理。我理解(目标)并发是指可以为给定版本同时安排到单个 Pod 的请求数。
但是,我不确定我是否理解并发值大于 1 的影响。当 N 个请求被安排到同一个 Pod 时会发生什么?是否会按 FIFO 顺序一次处理一个?是否会产生多个线程以并行服务它们(可能竞争 CPU 资源)?
我很想设置 concurrency=1 并依靠自动缩放来处理通过多个 Pod 的多个请求,但我想这不是最好的做法。
提前致谢
containerConcurrency
是 Knative 基础设施的一个参数,指示您的容器一次可以处理多少个请求。
在 AWS Lambda 和其他一些功能即服务产品中,每个实例只会处理一个请求。这可能更易于管理,但某些语言(例如 Java 和 Golang)很容易使用线程请求模型同时支持多个请求。Cloud Foundry 和 App Engine 等平台支持这种更大的并发性,但不支持代码转换的“函数”模型。
Knative 介于这两者之间。由于您可以自带容器,因此您可以构建一个像 Lambda 期望的单线程应用程序容器并设置containerConcurrency
为 1,或者您可以创建一个多线程容器并设置containerConcurrency
更高。