我必须从Google云函数调用外部API一段时间。在回复客户之前,我必须等待所有结果。由于我想尽快做出响应,我想让这些调用异步。但由于我可以接到很多电话(比如说,250或1000+个电话(,我想知道是否有限制(当然有一个…(。我在网上寻找答案,但我发现的所有事情都是关于同时调用CloudFunction,这不是我的问题。我发现了一些关于NodeJ的信息,但没有发现与CloudFunctions相关的信息。
我在用燃烧弹。
我还想知道在CloudFunction中是否有一种简单的方法可以使用最大并发连接数并对其余调用进行排队?
在云函数上,每个请求由该函数的一个实例处理,并且该实例在同一时间只能处理一个请求(没有并发请求处理->2个并发请求创建2个云函数实例(。
或者,使用Cloud Run,您可以在同一时间在同一实例上处理多达80个请求。因此,对于相同数量的并发请求,您的实例更少(最多减少80次(,并且由于您支付了CPU和内存,因此您将使用Cloud Run支付更少的费用。我写了一篇关于这个的(旧(文章
同一个云函数的实例数量已被删除(以前为1000(。因此,您在可伸缩性方面没有限制(即使在区域没有足够的资源来创建函数的新实例时存在物理限制(。
关于队列。。。实际上并没有排队。请求保持几秒钟(大约10秒(,并等待新实例创建或空闲实例(刚好完成处理另一个请求(。10秒后,返回429 HTTP错误代码。
关于云功能上的并发请求,我测试了在同一时间调用多达25000个请求,它可以正常工作。
然而,你受到功能容量(只有1个CPU,并发性有限(和内存的限制(提高内存,提高CPU速度,并允许处理更多并发请求->我用256Mb和2500个并发请求测试了内存不足(
我在Go中执行了测试