數棧產品分享:基於StreamWorks構建實時大數據處理平臺

數棧是雲原生—站式數據中臺PaaS,咱們在github和gitee上有一個有趣的開源項目:FlinkXFlinkX是一個基於Flink的批流統一的數據同步工具,既能夠採集靜態的數據,也能夠採集實時變化的數據,是全域、異構、批流一體的數據同步引擎。你們喜歡的話請給咱們點個star!star!star!mysql

github開源項目:https://github.com/DTStack/fl...git

gitee開源項目:https://gitee.com/dtstack_dev...github

2020年春節期間,一場突如其來的疫情在全國蔓延開來,打破了你們原有的工做生活節奏。疫情期間,你們宅在家就能隨時看到實時的大數據疫情地圖,能夠隨時刷到本身當前感興趣的抖音視頻,這一切背後依賴的最重要的技術,就是實時大數據處理技術。sql

如今疫情即將過去,國家提出要加快大數據中心等新型基礎設施建設,實時大數據處理平臺建設成爲企業數智化轉型過程當中愈來愈重要的部分。數據庫

1、什麼是實時計算

在大數據處理領域,一般根據數據的不一樣性質,將任務劃分爲實時計算與離線計算,以溫度傳感器的場景舉例:假設某城市安裝了大量的溫度傳感器,每一個傳感器每隔1min上傳一次採集到的溫度信息,由氣象中心統一彙總,每隔5分鐘更新一次各個地區的溫度,這些數據是一直源源不斷的產生的,且不會中止。實時計算就主要用於「數據源源不斷的產生,並且不會中止,須要以最小的延遲得到計算結果」的場景,這種最小的延遲一般爲秒級或分鐘級。架構

爲了知足這種數據量很大,並且實時性要求又很是高的場景,一般會採用實時計算技術,實時計算的「數據源源不斷」的特定決定了其數據處理方式與離線是大相徑庭的。
併發

Figure 1 實時計算和離線計算的區別app

離線計算的批量、高延時、主動發起的計算特色不一樣,實時計算是一種持續、低延時、事件觸發的計算任務。離線計算須要先裝載數據,而後提交離線任務,最後任務計算返回結果;實時計算首先要提交流式任務,而後等實時流數據接入,而後計算出實時結果流。
運維

Figure 2 實時計算和離線計算的區別(形象圖)分佈式

形象點能夠理解爲離線計算是開着船去湖裏(數據庫)打漁,實時計算爲在河流(數據流)上創建大壩發電。進一步發散,湖泊的造成依賴河流,河流肯定上下邊界就是湖泊;其實,離線計算能夠理解爲實時計算的一種特例。

2、實時計算能解決的問題


Figure 3 實時計算能解決的問題

從技術領域來看,實時計算主要用於如下場景:

  • 基於Data Pipline的實時數據ETL:目的是實時地把數據從A點傳輸到B點。在傳輸的過程當中可能添加數據清洗和集成的工做,例如實時構建搜索系統的索引、實時數倉中的ETL過程等。
  • 基於Data Analysis的實時數據分析:根據業務目標,從原始數據中抽取對應信息並整合的過程。例如,查看天天銷售額排行前10的商品、倉庫平均週轉時間、網頁平均點擊率、實時推送打開率等。實時數據分析則是上述過程的實時化,一般在終端體現爲實時報表或實時大屏。
  • 基於Data Driven的事件驅動應用:對一系列訂閱事件進行處理或做出響應的系統。事件驅動應用一般須要依賴內部狀態,例如點擊欺詐檢測、風控系統、運維異常檢測系統等。當用戶的行爲觸發某些風險控制點時,系統會捕獲這個事件,並根據用戶當前和以前的行爲進行分析,決定是否對用戶進行風險控制。

3、實時開發的全鏈路流程


Figure 4 實時開發的全鏈路流程

實時採集——使用流式數據採集工具將數據流式且實時地採集並傳輸到大數據消息存儲(kafka等),流式數據存儲做爲實時計算的上游,提供源源不斷的數據流去觸發流式計算做業的運行。流數據做爲實時計算的觸發源驅動實時計算運行。所以,一個實時計算做業必須至少使用一個流數據做爲源。每一條進入的流數據將直接觸發實時計算的一次流式計算處理。數據在實時計算系統中處理分析後隨機寫到下游數據存儲,下游數據庫通常與業務相關,能夠用來作實時報表、實時大屏等數據消費。

4、實時採集---全鏈路實時開發平臺的關鍵

整個全鏈路的實時開發中,實時採集是實時計算的上游。對於很對企業而言,自己已經有數據存儲系統,可是很大一部分都是離線的關係型數據庫。如何將這些離線的關係型數據庫的實時增量數據,提供給實時計算去分析,是一個亟需解決的環節。以下圖所示,是袋鼠雲實時數據採集工具的功能架構。

Figure 5 實時數據採集工具FlinkX數據流程

袋鼠雲實時數據採集做爲StreamWorks平臺的一個模塊,有如下功能特色。

  • FlinkX支持批量數據抽取,同時支持實時捕捉MySQL、Oracle、SQLServer等變化數據,實現批流統一採集。
  • 底層基於Flink分佈式架構,支持大容量、高併發同步,相比單點同步性能更好,穩定性更高。
  • 支持直接讀取數據庫Binlog的方式實時同步,也支持間隔輪詢方式實時同步。
  • 支持斷點續傳和髒數據記錄,實時數據採集的metric曲線展現。

5、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、屬性參數、告警配置等功能。
  • 項目管理: 用戶管理、角色管理、項目總體配置、項目成員管理等。

6、StreamWorks實時大數據開發平臺的優點


Figure 7 StreamWorks平臺層級

如上圖所示,StreamWorks實時大數據開發平臺基於Apache Flink計算引擎,作了一層SQL化的封裝,最上層有一個在線開發的IDE平臺。平臺有如下幾個優點點:

  • 簡單易用: 提供在線IDE,定製化適配FlinkSQL的開發工具!
  • 可視化DDL:提供可視化建表工具,配置參數便可完成DDL!
  • 內置函數:提供豐富的FlinkSQL內置函數,簡化開發工做!
  • 高效運維: 提供多達幾十個運行指標,解決開源運維難題!
  • 實時採集:提供實時採集工具,支撐全鏈路實時開發平臺!
  • FlinkX:自研的批流一體的數據採集工具,已經開源!

    Figure 8 傳統開發模式 VS StreamWorks開發模式

    7、十四行代碼搞定實時業務開發

講了這麼多,咱們的產品到底如何方便你們進行實時業務邏輯開發的,咱們仍是拿最多見的網站流量分析的例子說明下。好比,某網站須要對訪問來源進行分析:

以下圖所示,從日誌服務讀取該站點訪問日誌,解析日誌中的來源並檢查來源是否在感興趣的網站列表中(相似來源網站的白名單,保存在MySQL中),統計來自各個網站的流量PV,最終結果寫出到MySQL。

Figure 9 業務邏輯流程圖

用StreamSQL代碼實現的話很是簡單,只須要14行僞代碼便可搞定。

CREATE TABLE    
log_source(dt STRING, …)  
WITH (type=kafka); 
CREATE TABLE     
mysql_dim(url STRING, …, PRIMARY KEY(url))
WITH (type=mysql);  
CREATE TABLE     
mysql_result(url STRING, …, PRIMARY KEY(url))
WITH (type=mysql);  
INSERT INTO mysql_result
SELECT    
l.url, count(*) as pv …
FROM  log_source l JOIN mysql_dim  d ON l.url = d.url
group by l.url

8、基於StreamWorks構建實時推薦系統

通常的推薦系統都是基於標籤來實現的,基於標籤的推薦其實應用很廣泛,好比頭條,好比抖音,都用到了大量的標籤,這樣的推薦系統有不少優勢,好比實現簡單、可解釋性好等。如何經過標籤來實現實時商品或者內容的推薦呢?

首先一個新的用戶在註冊app帳號的時候會填寫一些比較固定的數據,好比年齡、職業等信息,這些信息能夠經過離線計算分析出長期興趣標籤的結果,存儲到長期興趣標籤庫。用戶在最近感興趣的內容(好比最近10分鐘內關注的信息點)能夠經過實時計算分析出短時間的興趣標籤結果,而後再經過實時開發的數據流關聯維表的功能,把短時間的感興趣標籤和長期興趣標籤庫作關聯,最終生成新的推薦內容給到客戶端,造成一個用戶數據流的閉環,從而實現一個簡單的實時推薦系統。具體流程以下圖所示。

Figure 10 基於StreamWorks構建實時推薦系統

9、結語——把將來變成如今

疫情即將過去,生活還要繼續。隨着「新基建」建設不斷深化下去,愈來愈多的實時化場景會出如今咱們生活中。袋鼠雲做爲新基建解決方案供應商,咱們的口號就是把將來變成如今,在將來會賦能更多的企業實時化轉型。

相關文章
相關標籤/搜索