云功能实例如何处理多个请求?

时间:2020-04-03 17:16:09

标签: node.js firebase google-cloud-functions

我试图围绕Cloud Function的实例及其工作原理进行探讨。

我在问一个HTTP函数的示例,但我认为该概念适用于任何类型的函数。

  • 假设我有一个名为ssrApp的云功能,可为我的应用处理 SSR
  • 我们假设每次收到请求都需要1 second来完成。
  • 当Cloud Function收到第一个请求时,它将启动一个实例来响应它。

问题

当多个请求到来时该实例的行为如何?

来自:https://cloud.google.com/functions/docs/concepts/exec

每个函数实例一次只能处理一个并发请求。 这意味着在您的代码正在处理一个请求时,不可能将第二个请求路由到同一实例。因此,原始请求可以使用原本可以使用的全部资源(CPU和内存)您要求的。

这是否意味着在运行1 second函数的ssrApp期间,如果有人点击了我的应用程序URL,则保证Cloud Function将启动另一个实例对于第二个请求?函数执行时仅执行sync次调用还是执行某些async次调用有关系吗?我的意思是,async调用可以释放实例以并行响应另一个请求吗?

1 个答案:

答案 0 :(得分:2)

这是否意味着在ssrApp函数运行的那一秒钟内,如果有人点击了我的应用URL,是否可以确保Cloud Function将为该第二个请求启动另一个实例?

这是一般行为,尽管不能保证调度。

该函数在执行过程中仅同步调用还是执行某些异步调用有关系吗?我的意思是,异步调用可以释放实例以并行响应另一个请求吗?

不,没有区别。如果容器正在等待异步调用,则它仍被视为正在使用中。