Java數據流的所有應用場景全面總結

數據流是一種數據分發技術。數據生成器將數據記錄寫入順序數據流。數據使用者可以按照相同的順序從數據流中讀取數據。這是一個用於數據生產者、數據流和數據消費者的簡單數據流圖:

 

數據生產者和消費者的數據流記錄

 

數據流可以有很多變量

從“表面”的角度來看,數據流是一個非常簡單的概念。數據生產者將記錄存儲在數據流中,然後消費者可以讀取這些數據流。然而,通過這個圖面,我們可以看到仍然有一些細節會影響數據流系統的“外觀”,這反過來會影響數據流系統的行爲和您可以做什麼。

每個數據流產品都對用例和處理技術(用於技術支持)進行假設。這些假設可能導致最終影響可用於實現數據流處理的行爲類型的設計選擇。本數據流教程將檢查哪些設計選項可用,並根據這些設計選項討論它們對用戶產品的影響。

數據流可以解耦生產者和消費者

數據流將數據生產者與數據消費者分離開來。當數據生產者只將其數據寫入數據流時,生產者不需要知道讀取數據的消費者。消費者可以獨立於生產者添加和刪除。消費者可以在生產商不知情的情況下開始/停止或暫停和恢復消費。這種分離簡化了數據生產者和用戶的實現。

據流作爲數據共享機制

數據流是大型分佈式系統中存儲和共享數據的一種非常有用的機制。如前所述,數據生產者只需要將數據發送到數據流系統。生產商不需要了解任何關於消費者的信息。消費者可以在線、離線、添加或刪除自己,而不影響生產者。

像LinkedIn這樣的大公司在內部廣泛使用數據流。Uber也在內部使用數據流。許多企業級公司正在採用或已經採用內部數據流。許多初創企業也是如此。

持久化數據流

數據流是持久的,在這種情況下,它們被稱爲日誌或日誌。持久數據流的優點是,數據流中的數據在數據流服務關閉後可以“生存”,因此數據記錄不會丟失。

與在內存中存儲記錄的數據流服務相比,持久數據流服務通常可以存儲更多的歷史數據。有些數據流保存歷史數據,甚至可以追溯到寫入數據流的第一個記錄。有些只保留部分歷史數據。

在持久數據流保留完整歷史記錄的情況下,用戶可以重複處理所有記錄,並基於這些記錄重建其內部狀態。如果消費者在其代碼中發現錯誤,它可以更正代碼並複製數據流以重建內部數據庫。

數據流用例

數據流是一個非常通用的概念,可以用來支持各種不同的用例。在本節中,我將介紹一些更常用的數據流用例。

用於事件驅動架構的數據流

數據流通常用於事件驅動的體系結構中。事件由事件生成器將事件作爲記錄寫入某些數據流系統,事件使用者可以讀取這些事件。

用於智能城市和物聯網的數據流

數據流還可以用於從智能城市周圍的傳感器、智能工廠中的傳感器或其他物聯網設備中的傳感器傳輸數據。溫度和污染當量可從裝置中取樣並定期寫入數據流。數據用戶可以根據需要從數據流中讀取樣本。

用於常規數據抽樣的數據流

智能城市中的傳感器和物聯網設備只是數據源的兩個例子,可以定期採樣並通過數據流提供。還有許多其他類型的數據可以定期採樣並作爲流提供。例如,還可以對貨幣匯率或股票價格進行採樣和傳輸。公衆意見值也可以定期採樣和流式處理。

用於數據點的數據流

在投票支持的情況下,您可以確定每個獨立的答案在投票流中的位置,而不是週期性樣本的總數。由獨立數據點(如投票)組成的總計有時比總計計算更有意義。這取決於特定的用例和其他因素,例如單個數據點是匿名的還是包含不應該共享的私有個人信息。

記錄、消息、事件和抽樣等。

數據流記錄有時被稱爲消息、事件、採樣和其他術語。使用哪個術語取決於數據流的特定用例以及生產者和消費者如何處理和響應數據。通常,用例引用記錄的具體含義可以從用例中清楚地理解。

值得注意的是,用例也會影響給定記錄所代表的內容。並非所有數據記錄都相同。事件與抽象值不同,不能總是以相同的方式使用。我將在本教程(和/或其他教程)中更詳細地討論這一點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章