我们设置了一个云函数,用于侦听云存储桶的更改。我们今天早上注意到它有几个小时没有触发(我们每小时有一个文件上传到该存储桶,所以它应该大约每小时运行一次(。然后,在上午8点18分左右,它开了几次火,"赶上"了一下子错过的火。举例说明:
{Normal runs}
4:50am - 1.csv uploaded to GCS bucket
4:50am - Cloud function tirggers on 1.csv
5:50am - 2.csv uploaded to GCS bucket
5:50am - Cloud function triggers on 2.csv
{This is where things get weird}
6:50am - 3.csv uploaded to GCS bucket
7:51am - 4.csv uploaded to GCS bucket
8:18am - Cloud function triggers on 3.csv
8:18am - Cloud function triggers on 4.csv
{Back to normal}
8:51am - 5.csv uploaded to GCS bucket
8:51am - Cloud function triggers on 5.csv
这是我们第一次注意到这种行为。GCP 状态页面指示云函数没有中断,尽管该服务仍处于测试阶段。
有没有人遇到过这种间歇性的可靠性?如果这种情况经常发生,我们将不得不重新考虑将其用作我们架构的一部分。
我应该注意,我们的云函数中的代码非常简单。开头有一个console.log
,我们用它来跟踪它何时运行(以及用于哪个文件(。过去 2 周内未发生任何错误。
从GCS文档中,没有交付承诺。
对象更改通知将尝试将通知传递到 以可靠的方式您的应用程序。但是,请注意 通知可以无限期延迟,及时性不是 保证。
使用云发布/订阅触发器将云功能连接到GCS Cloud Pub/Sub Notice可能会更可靠;但是,Cloud Pub/Sub Notifications也没有交付SLA。
看起来如果您需要在特定时间内收到通知,则无法保证,但它可能会在大多数时间起作用。