我应该使用Google Cloud Function或App Engine与Azure Cognetive Services连接并获得快速结果吗?

问题描述

简介

我在Google Cloud Function中使用Azure Face API(每次调用函数时都会发出3或4个https请求),但是执行时间却很慢,只有5秒。

函数执行耗时5395毫秒,状态为:“确定”

函数执行耗时3957毫秒,状态为:“确定”

函数执行耗时2512毫秒,状态为:“确定”

基本上,我在云功能中所做的是:

1. Detect a face using Azure
2. Save the face in the Azure LargeFaceList
3. Find 20 similar faces using Azure
4. Train the updated Azure LargeFaceList (if it is not being trained already)

我在us-central1(位于我的Azure Sace服务附近,位于美国中北部)中具有Google Cloud Function。我为它分配了2GB的内存和540秒的超时。我在欧洲。

问题

正如我之前所说,该函数花费太长时间才能完成其执行(从3.5秒到5秒)。我不知道这是因为“冷启动”还是因为算法运行需要时间。

Pd:LargeFaceList当前仅包含10张脸(对于1000张脸,训练时间为1秒,对于100万个30分钟)。

我的选项

运行以下代码

  1- Google Cloud Function (doing this Now)
  2- Google Cloud App Engine

过去3个月来我一直在尝试使用云功能,但我从未使用过App Engine服务。

我的问题

是否可以在App Engine上使用Firestore触发器?如果将这段代码移至App Engine,我会得到更快的执行时间吗?

解决方法

使用Cloud Functions,您只能对1个功能实例处理一个请求。如果您有2个请求,则Cloud Functions将创建2个实例,并且每个实例仅在一个实例上进行处理。

因此,如果您有180个并发请求,那么您将同时具有180个函数实例。 (最多1000个实例,默认配额)

Cloud Run与Cloud Functions在相同的基础架构上运行,但是运行容器。在1个Cloud Run实例上,您最多可以同时处理80个请求。

因此,对于180个并发请求,您应该有3或4个实例,而对于Cloud Functions,则不能有180个实例。而且,由于您要花处理时间(CPU +内存),所以180个Cloud Functions实例比3个Cloud Run服务要贵。

wrote an article on this.

总而言之,无服务器架构具有高度可伸缩性,可以并行处理请求。考虑仅处理一个请求的时间,而不考虑并发请求的最大数量。 (因此,从成本角度考虑)