實時數(shù)倉|架構(gòu)設(shè)計與技術(shù)選型


前言

???????? ?當(dāng)我們做一個項目時往往都需要選擇該用什么技術(shù)。這一部分不是我們普通員工想的,而是架構(gòu)師會根據(jù)客戶的需求選擇出合適的技術(shù)。當(dāng)選擇合適的技術(shù)會讓我們的開發(fā)事半功倍。下面我就來講解下我做的項目(實時數(shù)倉)是如何進(jìn)行選型的。

一、技術(shù)選型

???????? 當(dāng)我們在選擇技術(shù)時需要根據(jù)客戶的需求來進(jìn)行選擇。比如:實時統(tǒng)計交易金額(要求延遲不能超過一秒),這時我們在選擇技術(shù)時就不能用那些批處理的技術(shù)比如Hive,MapRducer 等,因為MapRducer 啟動有可能就能超過了一秒鐘,所以根本就不能滿足這些需求。這時我們可以考慮用一些實時計算的技術(shù)如 Flink,SparkStreaming等。接下來我們就來講解下如何選擇。

???????? 目前市場是有很多實時計算的技術(shù)如:Spark streaming、Struct streaming、Storm 、JStorm(阿里)Kafka Streaming 、Flink 等眾多的技術(shù)棧我們該如何選擇那?

? ? ? ?如果對延遲要求不高的情況下,可以使用 Spark Streaming,它擁有豐富的高級 API,使用簡單,并且 Spark 生態(tài)也比較成熟,吞吐量大,部署簡單,社區(qū)活躍度較高,從 GitHub 的 star 數(shù)量也可以看得出來現(xiàn)在公司用 Spark 還是居多的,并且在新版本還引入了 Structured Streaming,這也會讓 Spark 的體系更加完善。?????????

? ? ? ?如果對延遲性要求非常高的話,可以使用當(dāng)下最火的流處理框架 Flink,采用原生的流處理系統(tǒng),保證了低延遲性,在 API 和容錯性方面做的也比較完善,使用和部署相對來說也是比較簡單的,加上國內(nèi)阿里貢獻(xiàn)的 Blink,相信接下來 Flink 的功能將會更加完善,發(fā)展也會更加好,社區(qū)問題的響應(yīng)速度也是非??斓?,另外還有專門的釘釘大群和中文列表供大家提問,每周還會有專家進(jìn)行直播講解和答疑。

本項目:使用Flink來搭建實時計算平臺

二、需求分析

目前需求有最后通過報表實時展示:

  1. 統(tǒng)計用戶日活對比分析(PV、UV、游客數(shù))分別使用柱狀圖顯示

2. 漏斗展示(付款數(shù)、下單數(shù)、加入購物車數(shù)、瀏覽數(shù))

3.? 統(tǒng)計一周銷售額,使用曲線圖顯示

7. TopN地區(qū)排行

數(shù)據(jù)來源PV/UV數(shù)據(jù)來源

  • 來自于頁面埋點數(shù)據(jù),將用戶訪問數(shù)據(jù)發(fā)送到web服務(wù)器
  • web服務(wù)器直接將該部分?jǐn)?shù)據(jù)寫入到kafka的click_log topic 中

銷售金額與訂單量數(shù)據(jù)來源

  • 訂單數(shù)據(jù)來源于mysql
  • 訂單數(shù)據(jù)來自binlog日志,通過canal 實時將數(shù)據(jù)寫入到kafka的order的topic中

購物車數(shù)據(jù)和評論數(shù)據(jù)

  • 購物車數(shù)據(jù)一般不會直接操作mysql,通過客戶端程序?qū)懭氲絢afka(消息隊列)中
  • 評論數(shù)據(jù)也是通過客戶端程序?qū)懭雓afka(消息隊列)中

三、架構(gòu)設(shè)計

小結(jié)

???????? ?本篇文章主要講解了如何選擇一合適技術(shù)棧,以及后面分享的技術(shù)實時數(shù)倉的架構(gòu)圖。我們在離線數(shù)倉使用的是hive我們可以在Hive中進(jìn)行一個層,而要做實時數(shù)倉的話需要使用消息隊列來做分層,本次項目使用Kafka來分層。我在這里為大家提供大數(shù)據(jù)的資源需要的朋友可以去下面GitHub去下載,信自己,努力和汗水總會能得到回報的。我是大數(shù)據(jù)老哥,我們下期見~~~

資源獲取 獲取Flink面試題,Spark面試題,程序員必備軟件,hive面試題,Hadoop面試題,Docker面試題,簡歷模板等資源請去GitHub自行下載 https://github.com/lhh2002/Framework-Of-BigDataGitee 自行下載 ?https://gitee.com/li_hey_hey/dashboard/projects實時數(shù)倉代碼GitHub:https://github.com/lhh2002/Real_Time_Data_WareHouse


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容