是否有可能降低管道的吞吐量?
问题描述:
我有一个与外部资源通信的数据流作业。问题是这些外部资源比数据流作业慢,这会导致外部资源始终饱和。我需要某种形式来减少从PubSub或其他东西读取的消息数量,以减少作业的吞吐量,以减少流向外部资源的流量。是否有可能降低管道的吞吐量?
谢谢。
答
我们目前不支持节流原语(例如“确保此DoFn在整个工作中每秒最多调用X个X”),但我们知道这是一个重要的用例,它很可能是早晚支持。
正如Ryan所说,同时最好的办法是限制工人和工人线程的数量:指定--numWorkers
(或--maxNumWorkers
,如果您使用自动缩放)和--numberOfWorkerHarnessThreads
。但是请注意,这将导致创建输入消息的积压,而不是丢弃它们。很难判断你的用例哪个更好。
减少工人的机器类型和数量会减慢执行速度。 – Ryan
如果输入流水线的速度始终快于外部系统处理输出的速度,那么您希望如何处理多余的输入消息:删除它们或创建待办事项以便稍后在输入负载变小时处理? – jkff