數棧產品分享:基於StreamWorks構建實時大資料處理平臺
2020年春節期間,一場突如其來的疫情在全國蔓延開來,打破了大家原有的工作生活節奏。疫情期間,大家宅在家就能隨時看到實時的大資料疫情地圖,可以隨時刷到自己當前感興趣的抖音影片,這一切背後依賴的最重要的技術,就是實時大資料處理技術。
現在疫情即將過去,國家提出要加快大資料中心等新型基礎設施建設,實時大資料處理平臺建設成為企業數智化轉型過程中越來越重要的部分。
一、什麼是實時計算
在大資料處理領域,通常根據資料的不同性質,將任務劃分為實時計算與離線計算,以溫度感測器的場景舉例:假設某城市安裝了大量的溫度感測器,每個感測器每隔1min上傳一次採集到的溫度資訊,由氣象中心統一彙總,每隔5分鐘更新一次各個地區的溫度,這些資料是一直源源不斷的產生的,且不會停止。實時計算就主要用於“資料來源源不斷的產生,而且不會停止,需要以最小的延遲獲得計算結果”的場景,這種最小的延遲通常為秒級或分鐘級。
為了滿足這種資料量很大,而且實時性要求又非常高的場景,通常會採用實時計算技術,實時計算的“資料來源源不斷”的特定決定了其資料處理方式與離線是截然不同的。
Figure 1 實時計算和離線計算的區別
離線計算的批次、高延時、主動發起的計算特點不同,實時計算是一種持續、低延時、事件觸發的計算任務。離線計算需要先裝載資料,然後提交離線任務,最後任務計算返回結果;實時計算首先要提交流式任務,然後等實時流資料接入,然後計算出實時結果流。
Figure 2 實時計算和離線計算的區別(形象圖)
形象點可以理解為離線計算是開著船去湖裡(資料庫)打漁,實時計算為在河流(資料流)上建立大壩發電。進一步發散,湖泊的形成依賴河流,河流確定上下邊界就是湖泊;其實,離線計算可以理解為實時計算的一種特例。
二、實時計算能解決的問題
Figure 3 實時計算能解決的問題
從技術領域來看,實時計算主要用於以下場景:
- 基於Data Pipline的實時資料ETL:目的是實時地把資料從A點傳輸到B點。在傳輸的過程中可能新增資料清洗和整合的工作,例如實時構建搜尋系統的索引、實時數倉中的ETL過程等。
- 基於Data Analysis的實時資料分析:根據業務目標,從原始資料中抽取對應資訊並整合的過程。例如,檢視每天銷售額排行前10的商品、倉庫平均週轉時間、網頁平均點選率、實時推送開啟率等。實時資料分析則是上述過程的實時化,通常在終端體現為實時報表或實時大屏。
- 基於Data Driven的事件驅動應用:對一系列訂閱事件進行處理或作出響應的系統。事件驅動應用通常需要依賴內部狀態,例如點選欺詐檢測、風控系統、運維異常檢測系統等。當使用者的行為觸發某些風險控制點時,系統會捕獲這個事件,並根據使用者當前和之前的行為進行分析,決定是否對使用者進行風險控制。
三、實時開發的全鏈路流程
Figure 4 實時開發的全鏈路流程
實時採集——使用流式資料採集工具將資料流式且實時地採集並傳輸到大資料訊息儲存(kafka等),流式資料儲存作為實時計算的上游,提供源源不斷的資料流去觸發流式計算作業的執行。流資料作為實時計算的觸發源驅動實時計算執行。因此,一個實時計算作業必須至少使用一個流資料作為源。每一條進入的流資料將直接觸發實時計算的一次流式計算處理。資料在實時計算系統中處理分析後隨機寫到下游資料儲存,下游資料庫一般與業務相關,可以用來做實時報表、實時大屏等資料消費。
四、實時採集---全鏈路實時開發平臺的關鍵
整個全鏈路的實時開發中,實時採集是實時計算的上游。對於很對企業而言,本身已經有資料儲存系統,但是很大一部分都是離線的關係型資料庫。如何將這些離線的關係型資料庫的實時增量資料,提供給實時計算去分析,是一個亟需解決的環節。如下圖所示,是袋鼠雲實時資料採集工具的功能架構。
Figure 5 實時資料採集工具FlinkX資料流程
袋鼠雲實時資料採集作為StreamWorks平臺的一個模組,有以下功能特點。
- FlinkX支援批次資料抽取,同時支援實時捕捉MySQL、Oracle、SQLServer等變化資料,實現批流統一採集。
- 底層基於Flink分散式架構,支援大容量、高併發同步,相比單點同步效能更好,穩定性更高。
- 支援直接讀取資料庫Binlog的方式實時同步,也支援間隔輪詢方式實時同步。
- 支援斷點續傳和髒資料記錄,實時資料採集的metric曲線展示。
五、StreamWorks實時開發平臺介紹
袋鼠雲實時開發平臺(StreamWorks)基於 Apache Flink 構建的雲原生一站式大資料流式計算平臺,涵蓋從實時資料採集到實時資料ETL的全鏈路流程。亞秒級別的處理延時, Datastream API 作業開發,與已有大資料元件相容,幫助企業實時資料智慧化轉型,助力新型基礎設施建設。
在以往的資料開發技術棧中,SQL語言能解決大部分業務場景的問題。StreamWorks的核心功能是主打以SQL語義的流式資料分析能力(FlinkStreamSQL),降低開發門檻。提供Exactly-Once的處理語義保證,保證業務精確一致。
Figure 6 StreamWorks功能架構
如上圖所示,StreamWorks包含如下幾個模組:
- 實時採集:支援MySQL、SQLServer、Oracle、PolarDB、Kafka、EMQ等資料來源實時資料採集,透過速率和併發數控制可幫助使用者更準確的控制採集過程。
- 資料開發:支援FlinkSQL、Flink任務型別,FlinkSQL作業提供視覺化儲存配置、作業開發、語法檢查等功能;Flink任務支援上傳jar包的方式執行實時開發作業。
- 任務運維:任務執行情況監控,資料曲線、執行日誌、資料延時、CkeckPoint、Failover、屬性引數、告警配置等功能。
- 專案管理: 使用者管理、角色管理、專案整體配置、專案成員管理等。
六、StreamWorks實時大資料開發平臺的優勢
Figure 7 StreamWorks平臺層級
如上圖所示,StreamWorks實時大資料開發平臺基於Apache Flink計算引擎,做了一層SQL化的封裝,最上層有一個線上開發的IDE平臺。平臺有以下幾個優勢點:
- 簡單易用: 提供線上IDE,定製化適配FlinkSQL的開發工具!
- 視覺化DDL:提供視覺化建表工具,配置引數即可完成DDL!
- 內建函式:提供豐富的FlinkSQL內建函式,簡化開發工作!
- 高效運維: 提供多達幾十個執行指標,解決開源運維難題!
- 實時採集:提供實時採集工具,支撐全鏈路實時開發平臺!
- FlinkX:自研的批流一體的資料採集工具,已經開源!
Figure 8 傳統開發模式 VS StreamWorks開發模式
七、十四行程式碼搞定實時業務開發
講了這麼多,我們的產品到底如何方便大家進行實時業務邏輯開發的,我們還是拿最常見的網站流量分析的例子說明下。比如,某網站需要對訪問來源進行分析:
如下圖所示,從日誌服務讀取該站點訪問日誌,解析日誌中的來源並檢查來源是否在感興趣的網站列表中(類似來源網站的白名單,儲存在MySQL中),統計來自各個網站的流量PV,最終結果寫出到MySQL。
Figure 9 業務邏輯流程圖
用StreamSQL程式碼實現的話非常簡單,只需要14行虛擬碼即可搞定。
八、基於StreamWorks構建實時推薦系統
一般的推薦系統都是基於標籤來實現的,基於標籤的推薦其實應用很普遍,比如頭條,比如抖音,都用到了大量的標籤,這樣的推薦系統有很多優點,比如實現簡單、可解釋性好等。如何透過標籤來實現實時商品或者內容的推薦呢?
首先一個新的使用者在註冊app賬號的時候會填寫一些比較固定的資料,比如年齡、職業等資訊,這些資訊可以透過離線計算分析出長期興趣標籤的結果,儲存到長期興趣標籤庫。使用者在最近感興趣的內容(比如最近10分鐘內關注的資訊點)可以透過實時計算分析出短期的興趣標籤結果,然後再透過實時開發的資料流關聯維表的功能,把短期的感興趣標籤和長期興趣標籤庫做關聯,最終生成新的推薦內容給到客戶端,形成一個使用者資料流的閉環,從而實現一個簡單的實時推薦系統。具體流程如下圖所示。
Figure 10 基於StreamWorks構建實時推薦系統
九、結語——把未來變成現在
疫情即將過去,生活還要繼續。隨著“新基建”建設不斷深化下去,越來越多的實時化場景會出現在我們生活中。袋鼠雲作為新基建解決方案供應商,我們的口號就是把未來變成現在,在未來會賦能更多的企業實時化轉型。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995740/viewspace-2769998/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於 RocketMQ Connect 構建資料流轉處理平臺MQ
- RocketMQ Connect 構建流式資料處理平臺MQ
- 數棧產品分享:簡析資料中臺如何透過DataAPI實現資料共享API
- 大資料平臺之大資料處理系統的架構大資料架構
- 大資料處理平臺都有哪些?大資料
- 剖析大資料平臺的資料處理大資料
- 大資料分析平臺如何構建大資料
- 擅長處理臨時資料的結構——棧
- 數棧產品分享:Kafka—實時離不開的那個TAKafka
- 基於Apache Hudi在Google雲構建資料湖平臺ApacheGo
- 數棧產品分享:乾貨解讀資料中臺產品「模組化」設計思路
- 使用Kafka和Flink構建實時資料處理系統Kafka
- 數棧技術分享:產品經理線上官方解答數棧小知識
- 伴魚基於 Flink 構建資料整合平臺的設計與實現
- 基於Hadoop的大資料平臺實施——整體架構設計Hadoop大資料架構
- 基於python的大資料分析-資料處理(程式碼實戰)Python大資料
- 阿里雲大資料認證——基於阿里雲數加構建企業級資料分析平臺-課堂筆記阿里大資料筆記
- 構建大資料平臺的必要性大資料
- 美團基於 Flink 的實時數倉平臺建設新進展
- 基於Go語言構建的萬億級流量大資料平臺架構Go大資料架構
- 餘利華:網易大資料平臺架構實踐分享!大資料架構
- TOP100summit:【分享實錄】鏈家網大資料平臺體系構建歷程MIT大資料
- 基於Flink構建全場景實時數倉
- GaussDB(DWS)基於Flink的實時數倉構建
- 使用記憶體NewSQL資料平臺來處理實時資料流的三個好處記憶體SQL
- 愛奇藝大資料實時分析平臺的建設與實踐大資料
- MetaTown:一個可以自己構建數字資產的平臺
- 高效處理日均5000億+資料:58集團基於Apache SeaTunnel的資料整合平臺架構最佳化Apache架構
- 資料產品:CDP(客戶資料平臺)必備的產品能力
- 聯童科技基於incubator-dolphinscheduler從0到1構建大資料排程平臺之路BAT大資料
- 基於 Serverless 的部署平臺構建與思考Server
- 構建實時資料整合平臺時,在技術選型上的考量點
- 基於容器的金融資料庫雲平臺DBaaS設計實踐分享資料庫
- 阿里大資料產品Dataphin上線公共雲,將助力更多企業構建資料中臺阿里大資料
- 大資料平臺基礎架構hadoop安全分析大資料架構Hadoop
- 美圖大資料平臺架構實踐大資料架構
- 基於 Echarts 的資料視覺化在異構資料平臺的實踐Echarts視覺化
- 七牛大資料平臺的實時資料分析實戰大資料