首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google /Sub控制RateLimit

Google /Sub控制RateLimit
EN

Stack Overflow用户
提问于 2021-04-02 15:40:50
回答 1查看 418关注 0票数 0

我做了一个云功能来执行以下操作:

  1. 在前一天(大约400个id's)晚上一次收到订单id的过滤器,每个id的
  2. 从源获取详细信息,
  3. 为每个详细信息从目标获取额外信息,
  4. 发送给目标作为发票。

我的问题在第二步,利率限制是每分钟14次。所以我想在1到2之间创建一个Pub/Sub。创建一个订阅函数,从主题中提取消息。对其中的14条进行处理,并对这些消息进行压缩,然后解析承诺。但这给我留下了疑问:

2?

  • if
    1. 是正确的流程吗?
    2. 如何调度步骤

    ,我得到一个429响应,等待1分钟(这将被计费),

    1. 让步骤2每1分钟运行一次,而不是获得429响应代码?(这将在一天中运行很长时间,当没有messages.
    2. instead的拉扯,让pub/sub触发函数,检查响应代码->如果429,然后等待1分钟进行处理。但是我的问题是:它是调用云函数的一个实例还是多个?

我希望有人能分享一些想法。我对云函数和异步编程很陌生。我的空穴功能和预期的一样工作,限制在5订单。就在不久之后,我打破了这个利率限制(我知道,愚蠢的我)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-02 17:25:03

就我个人而言,我认为可以使用Firestore来存储每个id (document )的进程状态。

我的意思是,第一个函数在Firestore集合中创建(大约)400个文档--问题中的每个id都有一个文档。然后,每个文档可以用作“状态机”和给定文档处理的“日志”--从详细信息检索到发票生成和邮寄……

此外,第一个函数可以发送带有文档id的pubsub消息(到目前为止大约有400条消息)。

在公共主题的另一边,有第二个云函数。我会计算其并行运行的实例的最大数量,以最小化API速率异常,但是如果接收到异常--这不是一个问题。该函数执行实际工作,并更新消防局文档的状态(即在成功的情况下,或在例外情况下的其他状态.

然后,我们有了一些调度程序(假设每15分钟就有一次,或者10次,或者20次--我不知道上下文)、一个公共主题和另一个云功能。这个云函数(在获得调度程序的消息后)扫描Firestore集合,对于具有'exception‘状态的文档,将消息发送到第一个pubsub (见上文),以便文档可以被重新处理--这是一个“自我恢复”过程.

进程“日志”(状态更新等)可以在Firestore文档中收集,因此他们每个人都获得了整个过程是如何(多长时间)发生的“历史”.

此外,我还会使用一个专门的Stackdriver来监视它的运行情况(如果每个时间单位都有一些异常超过某个限制--例如,它会导致警报触发)。日志消息,应该包含与Firestore集合中的" Log“(和其他详细信息)大致相似的信息。

然后我会在BigQuery中使用一个接收器,并有一些报告/仪表板(如果需要的话).

最后,应该有一个自定义服务帐户来运行那些具有相关IAM角色的云功能,以处理GCP资源(pubsub、firestore、Stackdriver等).

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66921764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档