在Google Cloud Dataflow中自动缩放

Chr*_*ath 7 autoscaling google-cloud-dataflow

我们有一个流管道,我们已启用自动缩放功能.通常,一个工作人员足以处理传入的数据,但是如果存在积压工作,我们希望自动增加工作人员的数量.

我们的管道从Pubsub读取,并且每3分钟使用加载作业将批次写入BigQuery.我们从一个工作者开始运行此管道,向pubsub发布两倍于一个工作者可以使用的数据.2小时后,自动缩放仍未启动,因此积压数据约为1小时.考虑到自动调节旨在将积压保持在10秒以下(根据此SO答案),这似乎相当差.

这里的文档说,流媒体作业的自动调节是测试版,并且如果接收器是高延迟的,那么已知它是粗粒度的.是的,我想每3分钟做一次BigQuery批次就算是高延迟!在改进此自动缩放算法方面是否有任何进展?

在此期间我们可以做任何解决方法,例如测量管道中不同点的吞吐量吗?我找不到有关如何将吞吐量报告给自动扩展系统的任何文档.

小智 1

后台日志是由未确认的消息创建的,我猜您正在使用请求订阅。如果处理消息的时间比确认时间长,则将根据Pub/Sub 的至少一次传递重新发送该消息。唯一能够处理该消息的工作人员是第一个收到该消息的工作人员。在这种情况下不会创建任何实例。

您需要做的是调整您的系统以在确认截止日期到期之前处理消息。在某些情况下,您可能会通过使用推送消息而受益。我建议查看此有关Pub/Sub 创建的积压工作的文档。