![](http://static.javashuo.com/static/loading.gif)
Apache Doris是一個現代化的MPP分析型數據庫產品。僅需亞秒級響應時間便可得到查詢結果,有效地支持實時數據分析。Apache Doris的分佈式架構很是簡潔,易於運維,而且能夠支持10PB以上的超大數據集。mysql
Apache Doris能夠知足多種數據分析需求,例如固定歷史報表,實時數據分析,交互式數據分析和探索式數據分析等。令您的數據分析工做更加簡單高效!web
想要了解更多doris,能夠去官網學習Apache Doris,Flink我也不贅述了,說多了,今天講不完😝。
咱們的業務背景,就是想秒級實時數據呈現。算法
![](http://static.javashuo.com/static/loading.gif)
數據量介紹:
sql
請求百億級數據庫
曝光億級微信
點擊百萬級網絡
其餘數據就不說了,我就簡單講哈哈。架構
▍2.2 遇到的問題
計算問題:app
多表join不易維護運維
sql化還要實現各類udf函數
開發耗時
存儲問題:
寬表須要多流join,還得關聯維度表
es不支持join,須要提早加工好寬表
es大量聚合查詢性能降低
es-sql,計算函數支持不優雅,好比:除法等等
es沒有聚合模型,全量寫入會帶來寫入壓力和冗餘數據,須要依託flink窗口預計算來減輕寫入壓力。缺點:flink窗口小,寫入量大帶來數據冗餘和寫入性能差;flink窗口大,寫入數據量會減小,數據時效性差,沒法知足模型訓練秒級別的需求
▍2.3 解決問題
計算替代思考🤔?
多流join,可否在近實時的olap引擎中去作?
用olap引擎作能帶給咱們什麼價值?
web接口服務提供的維度數據如何辦?olap也無法實時查詢接口服務呀,還有kv內存得維度數據,這些都須要flink去擴充。mysql的數據也能夠用flink擴充,也能夠本身經過腳本寫入到olap中。
結論:doris能夠替代flink作join計算,而且doris的udf函數齊全,自帶colocate join模型(按照相同key分桶,join的時候能夠避免網絡shuffle)和聚合模型(下降數據量,提高查詢效率),還有好多優點,我就很少說了,doris真的是個神器😝。
看上面👆這個圖,你就知道doris的優點了,千萬級數據join,秒級產出,很是贊👍。
存儲替代思考🤔?
爲何es不支持join,咱們還要去用他?爲何不能替換?
什麼組件替換比較好呢?行業內都在用什麼組件?
總結:直接換成doris,es自己就不適合作olap多維聚合分析,尤爲是在join的場景,沒法知足業務需求。
計算上olap能夠替代部分flink的join任務:
兩個kafka流作join,無需關聯kv和接口維度數據,好比點擊流+喚起流+mysql維度信息(多個mysql表),能夠直接在doris中作join,無需單獨開發flink去作,複用doris的udf函數。(目前我在doris中都是進行4表join很是方便,千萬級數據join性能在2-3s返回)
mysql能夠寫個定時任務寫入到doris中
hive的維度數據也能夠導入到doris中進行維度關聯。
最後架構:
總結:doris內部作join能夠節省開發時間,而且自已維護,不用考慮數據延遲落後的問題。doris內部自帶物化視圖,既能夠存明細,也能夠實現聚合模型,既方便報表查詢,也方便線上經過明細數據問題排查,同時還方便維護,模型訓練也支持秒級查詢。
爲何我要all in 這個doris
es沒法進行join計算
druid進行join計算還不夠強大(雖然新版0.18.0本支持了join語法)
clickhouse運維複雜(仍是長期看好,性能是個亮點)
kylin的cube爆炸,計算和管理成本高。
淺談不到位的,還請各位大佬多多指點,祝全部作大數據的小夥伴,均可以升職加薪,超過作算法同窗的工資哈哈哈哈哈哈哈
![](http://static.javashuo.com/static/loading.gif)
業務常常變更打法,你的實時數據倉不能構建的過重,須要短期迭代上線(你們沒有遇到業務提一個需求,一個月時間作完了,業務用了幾回就不用了,還有就是公司改變廣告營銷打法,以前的實時指標可能沒人去看了,打入冷宮了)。
你的架構要足夠的輕量化,易維護,同時還得兼顧:明細查詢(線上問題排查),聚合查詢(報表指標呈現)
業務看重的是你支持業務的能力,而不是你花裏胡哨的架構。你要確保業務當天提需求,當天能夠完成,你的架構好壞是靠你支持業務的效果來體現,因此適合本身業務的架構,就是好架構。
你的架構平時穩只能算及格,你要確保架構在大促和高峯流量來時系統穩定,能不能抗住百億或者千億的流量。
不一樣sla的業務場景設計不一樣的架構,並非全部的業務場景都是要求毫秒或者秒級,其實你仔細跟他們聊分鐘級他們也能夠接受,不一樣的sla對你的計算資源成本要求不同,適量把控計算資源成本,優秀的工程師都是想辦法給公司省錢,同時還能夠圓滿完成任務。
![](http://static.javashuo.com/static/loading.gif)
最後拋出來一個問題,500億的實時數據,如何加工報表指標?是全量計算嗎?全量計算會遇到什麼問題?數據傾斜怎麼辦?即便數據不傾斜了,遇到流量高峯怎麼辦?數據背壓就必定要追加計算資源嗎?你有什麼好的辦法?
公衆號回覆:「資料全集」,海量PPT等你來拿。
本文分享自微信公衆號 - 小晨說數據(flink-spark)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。