基于Azure架构完成2000万次REST API调用的方案咨询
问题背景与核心需求
- 需从无速率限制的高速REST API获取约2000万个实体数据,每个实体需执行两次API调用:先获取元数据,再拉取实际数据
- 实体大小跨度为1KB至100MB
- 最终要把实体以CSV格式存入Azure Blob Storage,批处理大小无限制
- 必须使用Azure原生服务,且需支持至少12-16个不同的API端点
- 理想完成时长为1-2天
已尝试的方案及结果
简易Function App+Event Hub方案
- 实现方式:用Function App把2000万个ID发送到Event Hub,再由另一个监听Event Hub的Function执行API调用和Blob存储操作
- 结果:即便扩展到20个实例,耗时还是远达不到预期
Durable Functions方案
- 实现方式:通过HttpTrigger触发Orchestration函数,按批次拆分任务到子编排,由Activity函数执行API调用和存储;元数据存储一开始用16-vCore Gen5 MSSQL实例,后来换成了Storage Account
- 结果:比方案1快好几倍,但MSSQL频繁超时;换成Storage Account后速度明显下降,现在完成整个任务仍需要数天
Synapse管道方案
- 实现方式:使用包含REST调用和ForEach循环的无执行限制管道
- 结果:耗时极长,而且成本很高
寻求社区建议
目前只能通过REST API获取数据,无法直接访问厂商数据库(前面提到的数据库仅作为Durable Functions的元数据存储)。想请教社区,还有哪些Azure服务/工具组合能实现目标,在1-2天内完成数据的获取与存储?
内容的提问来源于stack exchange,提问作者LucID
相关产品推荐
相关产品推荐

