2015-10-06 52 views
1

我有一個與外部資源通信的數據流作業。問題是這些外部資源比數據流作業慢,這會導致外部資源始終飽和。我需要某種形式來減少從PubSub或其他東西讀取的消息數量,以減少作業的吞吐量,以減少流向外部資源的流量。是否有可能降低管道的吞吐量?

謝謝。

+0

減少工人的機器類型和數量會減慢執行速度。 – Ryan

+0

如果輸入流水線的速度始終快於外部系統處理輸出的速度,那麼您希望如何處理多餘的輸入消息:刪除它們或創建待辦事項以便稍後在輸入負載變小時處理? – jkff

回答

2

我們目前不支持節流原語(例如「確保此DoFn在整個工作中每秒最多調用X個X」),但我們知道這是一個重要的用例,它很可能是早晚支持。

正如Ryan所說,同時最好的辦法是限制工人和工人線程的數量:指定--numWorkers(或--maxNumWorkers,如果您使用自動縮放)和--numberOfWorkerHarnessThreads。但是請注意,這將導致創建輸入消息的積壓,而不是丟棄它們。很難判斷你的用例哪個更好。