什麼是資料流?

Tybyq發表於2018-11-06

資料流是一種資料分發技術,資料生成器將資料記錄寫入有序資料流,資料使用者可以從該資料流以相同的順序讀取資料。這是一個簡單的資料流圖,說明了資料生成器,資料流和資料使用者:

什麼是資料流?資料流有很多種變化
從表面上看,資料流作為一個概念我看起來很簡單。資料生成器將記錄儲存到資料流中,消費者稍後會讀取這些資料流。但是,表面下有許多細節會影響您的資料流系統的外觀,行為方式以及使用它可以做些什麼。
每個資料流產品都會對用例和處理技術做出一系列假設來支援。這些假設會導致某些設計選擇,這會影響您可以使用它們實現的流處理行為型別。此資料流教程檢查了許多這些設計選擇,並討論了它們作為基於這些設計選擇的產品使用者的後果。

資料流將生產者和消費者分離
資料流將資料生產者和資料消費者彼此分離。當資料生產者簡單地將其資料寫入資料流時,生產者不需要知道讀取資料的消費者。可以獨立於生產者新增和刪除消費者。消費者也可以啟動和停止或暫停和恢復他們的消費,而資料生產者不需要知道它。這種分離簡化了資料生產者和消費者的實施。

資料流作為資料共享機制
資料流是一種非常有用的機制,可以在更大的分散式系統中儲存和共享資料。如前所述,資料生成者只是將資料傳送到資料流系統。生產者不需要了解消費者的任何資訊。消費者可以在不影響生產者的情況下上下,新增和刪除。
像LinkedIn這樣的大公司在內部廣泛使用資料流。優步也在內部使用資料流。許多企業級公司正在內部採用或已採用資料流。許多初創公司也是如此。

持久資料流
資料流可以是持久的,在這種情況下,它有時被稱為日誌或日誌。持久資料流的優點是流中的資料可以在資料流服務關閉後繼續存在,因此不會丟失任何資料記錄。
與僅儲存記憶體中的記錄的資料流服務相比,持久資料流服務通常可以儲存更大量的歷史資料。一些資料流服務甚至可以將歷史資料一直儲存回寫入資料流的第一條記錄。其他人只持有例如數天的歷史資料。
在持久資料流儲存記錄的完整歷史記錄的情況下,消費者可以重放所有這些記錄並基於這些記錄重新建立其內部狀態。如果消費者在其自己的程式碼中發現錯誤,它可以糾正該程式碼並重放資料流以重新建立其內部資料庫。

資料流用例
資料流是一個非常通用的概念,可用於支援許多不同的用例。在本節中,我將介紹一些比較常用的資料流用例。

1.事件驅動架構的資料流
資料流通常用於實現 事件驅動的體系結構。事件由事件生成器作為記錄寫入某些資料流系統,事件消費者可以從中讀取這些事件。

2.智慧城市和物聯網的資料流
資料流還可用於從安裝在智慧城市周圍的感測器,智慧工廠內的感測器或其他物聯網裝置流式傳輸資料。可以定期從裝置中取樣溫度,汙染等級等值,並將其寫入資料流。資料使用者可以在需要時從資料流中讀取樣本。

3.定期取樣資料的資料流
智慧城市中的感測器和物聯網裝置只是資料來源的兩個例子,可以定期取樣並透過資料流提供。但是還有許多其他型別的資料可以定期取樣和流式傳輸。例如,貨幣匯率或股票價格也可以進行抽樣和流式傳輸。輪詢號碼也可以定期取樣和流式傳輸。

4.資料採集的資料流
在民意調查數字的示例中,您可以決定將每個單獨的答案流式傳輸到民意調查,而不是流式傳輸定期抽樣的總計。在某些情況下,總計是由各個資料點(如民意調查)組成的,有時比單獨計算的總數更有意義地流式傳輸各個資料點。這取決於具體的使用案例,以及其他因素,例如單個資料點是匿名的還是包含不應共享的私人個人資訊。

記錄,訊息,事件,樣本等
資料流記錄有時被稱為訊息,事件,樣本,物件和其他術語。使用什麼術語取決於資料流的具體用例,以及生產者和消費者如何處理和響應資料。通常從用例中可以清楚地看出,透過引用記錄有什麼意義。
值得注意的是,用例也會影響給定記錄所代表的含義。並非所有資料記錄都相同。事件與取樣值不同,並且不能始終以相同的方式使用。我將在本(和/或其他)教程的後面更詳細地介紹這一點。

相關文章