Doris和Flink在實時數倉實踐

weixin_51485976發表於2020-11-04

一、Doris簡介
1.1 簡介
Apache Doris是一個現代化的MPP分析型資料庫產品。僅需亞秒級響應時間即可獲得查詢結果,有效地支援實時資料分析。Apache Doris的分散式架構非常簡潔,易於運維,並且可以支援10PB以上的超大資料集。
Apache Doris可以滿足多種資料分析需求,例如固定歷史報表,實時資料分析,互動式資料分析和探索式資料分析等。令您的資料分析工作更加簡單高效!
1.2 架構
在這裡插入圖片描述
想要了解更多doris,可以去官網學習Apache Doris,Flink我也不贅述了,說多了,今天講不完。
我們的業務背景,就是想秒級實時資料呈現。
二、進入正題
2.1 我們的歷史架構
在這裡插入圖片描述
資料量介紹:
a.請求百億級
b.曝光億級
c.點選百萬級
d.其他資料就不說了,我就簡單講哈哈。
2.2 遇到的問題
計算問題:
a. 多表join不易維護
b. sql化還要實現各種udf函式
c. 開發耗時
儲存問題:
a. 寬表需要多流join,還得關聯維度表
b. es不支援join,需要提前加工好寬表
c. es大量聚合查詢效能下降
d. es-sql,計算函式支援不優雅,比如:除法等等
e. es沒有聚合模型,全量寫入會帶來寫入壓力和冗餘資料,需要依託flink視窗預計算來減輕寫入壓力。缺點:flink視窗小,寫入量大帶來資料冗餘和寫入效能差;flink視窗大,寫入資料量會減少,資料時效性差,無法滿足模型訓練秒級別的需求
2.3 解決問題
計算替代思考??
a.多流join,能否在近實時的olap引擎中去做?
b.用olap引擎做能帶給我們什麼價值?
c.web介面服務提供的維度資料如何辦?olap也沒法實時查詢介面服務呀,還有kv記憶體得維度資料,這些都需要flink去擴充。mysql的資料也可以用flink擴充,也可以自己通過指令碼寫入到olap中。
結論:doris可以替代flink做join計算,並且doris的udf函式齊全,自帶colocate join模型(按照相同key分桶,join的時候可以避免網路shuffle)和聚合模型(降低資料量,提升查詢效率),還有好多優勢,我就不多說了,doris真的是個神器。
在這裡插入圖片描述
看上面?這個圖,你就知道doris的優勢了,千萬級資料join,秒級產出,非常贊?。
儲存替代思考??
a.為什麼es不支援join,我們還要去用他?為什麼不能替換?
b.什麼元件替換比較好呢?行業內都在用什麼元件?
在這裡插入圖片描述
總結:直接換成doris,es本身就不適合做olap多維聚合分析,尤其是在join的場景,無法滿足業務需求。
a.計算上olap可以替代部分flink的join任務:
b.兩個kafka流做join,無需關聯kv和介面維度資料,比如點選流+喚起流+mysql維度資訊(多個mysql表),可以直接在doris中做join,無需單獨開發flink去做,複用doris的udf函式。(目前我在doris中都是進行4表join非常方便,千萬級資料join效能在2-3s返回)
c.mysql可以寫個定時任務寫入到doris中
d.hive的維度資料也可以匯入到doris中進行維度關聯。
最後架構:
在這裡插入圖片描述
總結:doris內部做join可以節省開發時間,並且自已維護,不用考慮資料延遲落後的問題。doris內部自帶物化檢視,既可以存明細,也可以實現聚合模型,既方便報表查詢,也方便線上通過明細資料問題排查,同時還方便維護,模型訓練也支援秒級查詢。
為什麼我要all in 這個doris
a.es無法進行join計算
b.druid進行join計算還不夠強大(雖然新版0.18.0本支援了join語法)
c.clickhouse運維複雜(還是長期看好,效能是個亮點)
d.kylin的cube爆炸,計算和管理成本高。
淺談不到位的,還請各位大佬多多指點.
三、業務數倉架構應該具備哪些能力?
a.業務經常變動打法,你的實時資料倉不能構建的太重,需要短時間迭代上線(大家沒有遇到業務提一個需求,一個月時間做完了,業務用了幾次就不用了,還有就是公司改變廣告營銷打法,之前的實時指標可能沒人去看了,打入冷宮了)。
b.你的架構要足夠的輕量化,易維護,同時還得兼顧:明細查詢(線上問題排查),聚合查詢(報表指標呈現)
業務看重的是你支援業務的能力,而不是你花裡胡哨的架構。你要確保業務當天提需求,當天可以完成,你的架構好壞是靠你支援業務的效果來體現,所以適合自己業務的架構,就是好架構。
c.你的架構平時穩只能算及格,你要確保架構在大促和高峰流量來時系統穩定,能不能抗住百億或者千億的流量。
d.不同sla的業務場景設計不同的架構,並不是所有的業務場景都是要求毫秒或者秒級,其實你仔細跟他們聊分鐘級他們也可以接受,不同的sla對你的計算資源成本要求不一樣,適量把控計算資源成本,優秀的工程師都是想辦法給公司省錢,同時還可以圓滿完成任務。

相關文章