我尝试使用Python Dataflow SDK编写自定义Source
,以便从REST端点并行读取JSON数据。
E.g。对于给定的一组ID,我需要从以下位置检索数据:
https://foo.com/api/results/1
https://foo.com/api/results/2
...
https://foo.com/api/results/{maxID}
我需要的主要功能是监控&速率限制:即使我需要并行性(基于线程/进程或使用异步/协同程序),我还需要确保我的工作保持"礼貌"朝向API端点 - 有效避免非自愿DDoS。
使用psq,我应该可以实现某种速率限制机制,但是我失去了监控进度的能力。 ETA使用Dataflow Service Monitoring
似乎虽然它们很好地协同工作,但Google Cloud Dataflow和Google Cloud Pub / Sub(使用Google Stackdriver Monitoring)之间的监控并不统一。
我应该如何构建一个大规模并行的HTTP消费者工作流程来实现速率限制并进行基于Web的监控?
答案 0 :(得分:1)
Dataflow目前没有内置的全局速率限制方法,但您可以使用Source API来执行此操作。关键概念是Source的每个拆分最多由一个线程处理,因此您可以为每个拆分单独实现本地速率限制。
此解决方案根本不使用Pub / Sub,因此您可以专门使用Dataflow Monitoring UI。如果要根据管道中的特定事件设置警报,可以执行this
之类的操作