我有一个数据管道链,通过管道特定的Pub/Sub主题相互通信。
[pipeline #1] -> [pipeline #2] -> [pipeline #3] -> ...
每个管道都是完全无状态的,可以根据各自的pub/sub队列大小水平扩展。
每个管道都有自己的吞吐量。pipeline #2
使用第三方API。这个API有每小时/每天的费率限制。
有时我的工作负载会出现峰值。除API管道外的所有管道都可以扩展以处理工作负载。但不是API管道。它最终会赶上来,但不是马上。
是否有办法将发布/订阅主题/订阅吞吐量降低到每小时/天的特定消息数量?
我很确定答案是否定的。如果是这样,我还有什么其他选择?
你是对的,答案是否定的。Cloud Task具有这种节流特性(命名为速率限制)。
一个解决方案设计可以是:
- PubSub调用下一步
- 处理(云功能/云运行/其他)堆栈请求在云任务
- 云任务调用下一步
- 调用第三方API的处理(云函数/云运行/其他东西)
很脏,但是你在Google Cloud上没有其他内置解决方案。