2016-05-16 174 views
2

在開始學習流處理時,我聽到以下兩個技術項:有狀態流處理和無狀態流處理,它們之間有什麼區別?我聽說風暴是無國籍的,而風暴三叉戟是有狀態的,所以在實踐中,在哪裏使用風暴以及在哪裏使用風暴三叉戟?有狀態和無狀態流處理

回答

6

兩者之間的差異在很高的級別上,您必須對它們執行的操作類型。

某些操作是無狀態的,即您一次處理一條記錄。 想象一下,銀行出納員可以一次處理一批客戶。每個客戶都是不依賴於以前的新工作單元。

有狀態的操作就像是僱用一名新員工。你有一羣人來接受採訪,但是如果你僱用他們,取決於你的狀態,也就是說你打開了什麼職位。

例如,假設您正在處理網絡日誌。如果您想知道每秒有多少用戶正在查看網頁,則您的處理爲幾乎爲無狀態:每秒計算每頁有多少用戶。每一秒鐘,你都不在乎前一秒的結果。這是無國籍的行動。

讓我們來說說,而不是你想要計算的下一秒將有多少用戶的預測。您希望平均過去10分鐘,因此您需要保留最後10 * 60秒的隊列 - 這就是您需要保留以供處理的狀態,並且您需要每秒更新一次,以保持最最近10分鐘的狀態。 這當然是有狀態的操作。 更簡單的有狀態操作只是計算自該網站開始以來的頁面瀏覽總數。

這兩個操作之間的一個關鍵區別是,如果流停止並且您重置系統,則必須注意保存狀態。 無狀態操作沒有任何狀態來保存,因此通常更簡單。