前言
???????? ?當(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來搭建實時計算平臺
二、需求分析
目前需求有最后通過報表實時展示:
統(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