4

使用谷歌云函数,有没有办法像 AWS Lambda 那样管理执行并发?(https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html

我的意图是设计一个使用任务文件并将这些任务发布到工作队列(发布/订阅)的函数。我想要一个从工作队列(发布/订阅)中使用任务并执行任务的函数。

以上可能导致大量几乎并发的执行。我的下游消费者服务很慢,一次不能消费很多并发请求。很可能,它会返回 HTTP 429 响应以尝试减慢生产者的速度。

有没有办法像使用 AWS 一样限制给定 Google Cloud 函数的并发性?

4

4 回答 4

4

此功能不适用于 Google Cloud Functions。相反,由于您要求处理系统打开并发任务的速度,因此任务队列是解决方案。

推送队列以可靠、稳定的速率调度请求。它们保证可靠的任务执行。因为您可以控制从队列发送任务的速率,所以您可以控制工作人员的扩展行为,从而控制您的成本。

在您的情况下,您可以控制调用下游消费者服务的速率。

于 2018-02-09T12:04:31.747 回答
4

这现在可以通过当前的 gcloud beta 实现!您可以设置一次可以运行的最大值:

gcloud beta functions deploy FUNCTION_NAME --max-instances 10 FLAGS...

请参阅文档https://cloud.google.com/functions/docs/max-instances

于 2019-05-13T19:30:19.053 回答
0

您可以通过控制触发器本身来控制触发云功能的速度。例如,如果您已将“在存储桶中创建新文件”设置为云功能的触发器,那么通过控制在该存储桶中创建的新文件数量,您可以管理并发执行。但是,此类解决方案并不完美,因为有时云功能会失败并自动重新启动(如果您以这种方式配置了云功能)而您无法控制它。实际上,云功能的活动实例的数量有时会超出您的计划。AWS 提供的是一个简洁的功能。

于 2019-05-03T10:39:26.330 回答
0

您可以使用配额设置“每秒函数调用次数”。它记录在这里: https ://cloud.google.com/functions/quotas#rate_limits

该文档告诉您如何增加它,但您也可以减少它以实现您正在寻找的那种节流。

于 2018-10-12T17:44:56.357 回答