接續串流處理相關的服務介紹:
Kinesis Data Firehose(KDF):
KDF是可以方便將串流資料以近乎即時(near real-time)的速度「載入」儲存目標的服務,在這極短的時間段中可以轉換資料成新的樣貌,方便串接的服務進行後續分析。
首先先建立交付串流Delivery Stream
Delivery Stream會將接收到的串流資料先以特定的大小或期間為單位存於緩衝,再交付至指定目的地。
建立時需指定資料來源與資料目標地
建立完成後就會出現在儀表板上,點選之後可以查看狀態
如果有轉檔和壓縮的需求
可以到第二個configuration分頁調整
轉檔是整合AWS Lambda的Function來完成
可以點選啟用後指定Lambda Function的 ARN
注意這裡的緩衝大小Buffer Size是以MB為單位,緩衝間隔Buffer Interval是以秒為單位
檔案壓縮是整合AWS Glue的服務,一樣可以點選啟用後選擇要輸出的格式
資料串流data stream與交付串流delivery stream的選用:
因為KDS不能直接輸出至目標儲存區,KDS後面通常會再串接KDF、KDA、Lambda或EC2取出資料後再輸出至目標儲存區。所以簡單區分的話如果是即時(real-time)的應用場景,首先考慮的是KDS;而近乎即時(near real-time)的應用場景,首先考慮建立KDF服務。
Kinesis Data Analytics (KDA):
KDA是可以使用SQL或Java做串流資料做即時ETL分析,其底層就是應用Apache Flink 的框架來做到即時處理串流資料。有新的Studio功能可以編寫程式碼。
點選建立分析AP後,設定應用程式類型
建立完成後才設定資料源,編寫SQL或Java,設定載入目標地。
Flink相關程式碼撰寫可以參照KDA相關的Git。
串流處理不僅是未來的趨勢,也因為近年來資料突刺的現象越來越常見。資料突刺Data acceleration,是指突然暴增的流量,這可能會導致系統的癱瘓,舉例像是社群軟體中Hashtag流量,或是像電商網站在某個節日促銷,它的網站流量也有可能在某個時間點突然衝高。
因為資料的價值其實是會隨著時間的增加而下降,所以資料處理的速度就變得很關鍵。
透過對「速度」問題的瞭解會發現,串流系統由是分工很細的獨立服務串接起來,有點像是每個服務都只專心做一件事情,以達到對速度的要求。但要求快的同時對資料的品質也不可以馬虎,而資料品質就與下個主題準確性(Veracity)有關。