簡體   English   中英

來自 Pub/Sub 卡頓的 Beam(DataFlow) 流

[英]Beam(DataFlow) streams from Pub/Sub stuckness

我們在 DataFlow 中有一個從 PubSub 讀取的 Beam 流式傳輸作業。 在高峰時段,PubSub 消息的數量從 25k/s 增加到 130k/s 並保持在 120k/s 一個小時。 在從 Pub/Sub 步驟(2-3 分鍾)和訂閱積壓中讀取時,我們可以看到一些短的水印峰值(在開始時和之后)。 數據流指示所有階段的可能卡頓,但日志中沒有任何內容。

我們的集群是固定大小的,沒有自動擴展,我認為我們有足夠的工作人員(峰值下降很快,這意味着我們可以處理高峰時段的負載,甚至消耗卡住的積壓)。

我唯一的想法是,除了未來的分組聚合之外,增加的負載可能會導致 PubSub 讀取中的內部洗牌。 也許有人對此有任何想法?

您可以使用消息排序來按順序傳遞消息,如果消息具有相同的ordering key並且在同一區域中,您可以啟用消息排序並按照 Pub/Sub 服務接收消息的順序接收消息。

Pub/Sub 至少傳遞每條消息一次,因此 Pub/Sub 服務可能會重新傳遞消息。 當您按順序接收消息並且 Pub/Sub 服務使用排序鍵重新傳遞消息時,Pub/Sub 還會通過使用相同的排序鍵重新傳遞后續消息來維護順序。 Pub/Sub 服務按照最初接收這些消息的順序重新傳遞這些消息。

具有相同 ordering key 的消息保證按順序傳遞。

不保證具有不同排序鍵的消息按順序傳遞,與發布時間無關。

在極少數情況下,無法確認消息可能會阻止其他排序鍵的消息傳遞。 當服務器意外重新啟動或由於流量更改而使用的服務器集發生更改時,會出現此問題。 為了保持此類事件的順序,必須在傳遞來自新服務器的消息之前確認發布到舊服務器的所有消息,即使它們用於不同的排序鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM