2015-08-14 36 views
0

我們目前正在使用谷歌任務隊列來分批請求,以將分析數據存儲到Keen和Stathat(批量投入更高性能)。爲了從任務隊列中消耗,我們有一組流程代理和工作者從任務隊列中消耗。將數據流看作是我們只是編寫推送到我們的分析解決方案的邏輯的地方,我們可以指定在我們的數據流程序中進行處理時批處理的大小,我很好奇數據流的開銷(似乎更多更大的應用程序)非常適合。這是Dataflow的一個很好的用例嗎?

回答

2

您的用例對於Dataflow來說似乎很不錯。您可以發佈到pubsub作爲將數據流式傳輸到Dataflow作業的方式,而不是發佈到任務隊列。您的數據流作業可以使用Dataflow窗口和觸發器根據大小和/或時間批量處理數據。然後,您可以將每批寫入您的數據存儲。

數據流應該適用於小數據集。開銷可能會以數據流工作者未使用的CPU週期爲代價。數據流允許您控制工作人員的數量,以便您可以分配多個適合您的數據大小的工作人員。

利用率取決於您的負載在多大程度上均勻分佈。如果您的峯值和平均負載差異很大,那麼您可以在延遲和利用率之間進行權衡。如果你想保持低延遲,那麼你可以選擇工人的數量,以便在高峯期保持高速運轉。另一方面,如果要最大限度地利用利用率,則可以根據平均負載來配置工作人員的數量。在高峯時段,您將開始在pubsub中積累積壓的消息。系統將在非高峯時段有剩餘容量時擺脫積壓。

現在Dataflow不支持爲無界數據編寫自定義接收器。解決此問題的一種方法是從DoFn而不是接收器進行寫入。這應該工作得很好,只要你可以以冪等的方式進行寫操作,以便多次寫入記錄不會導致問題。

窗口和觸發器是一種將數據劃分爲可以應用聚合(例如分組,求和等)的有限批量的方法。這blog post解釋它比我更好(看「窗口」部分)。

+0

我相信這會要求我們編寫自定義接收器,並在此處聲明:https://cloud.google.com/dataflow/model/custom-io 「數據流計劃添加對定製接收器的支持未來版本中的無限數據 「 從文檔中我不完全清楚,但是窗口/觸發器是否掩蓋了數據無界的事實? –

+0

從文檔中我不完全清楚,但是窗口/觸發器是否掩蓋了數據無界的事實? 觸發器文檔還不完全清楚: https://cloud.google.com/dataflow/model/triggers 「注意:您可以爲無界PCollection設置觸發器,該無限PCollection使用其單個全局窗口窗口功能... 「 –

+0

增加了兩個段落來解決您的問題。請讓我知道如果它仍然不清楚。 –

相關問題