100億小數據實時計算平臺
阿新 • • 發佈:2018-08-12
style 至少 關系 秒殺 java 大數據分析 找到 實例 data
2017年6月,開始數據分析的職業生涯,作為架構師,建立起一套基於.Net/.Net Core的小數據實時處理計算平臺,這裏記錄學習過程中的點點滴滴!
數據分析的核心,可以理解為:Select xxx From table Where yyy Group By zzz
小數據計算平臺的定位:
- 數據量在1000萬行到100億行之間,傳統關系型數據庫算起來吃力,且類似項目不是特別多,Hadoop搭起來難以收回成本
- 資源投入有限,基於傳統項目之上的輕量級數據分析,一般只能有1~2臺服務器,Hadoop最好能有8臺以上服務器
- 門檻低,普通軟件工程師容易上手做數據分析,並參與開發配套的業務系統,大數據開發工程師需要會很多(Hadoop、MapReduce、HDFS、Hive、HBase、Spark、Zookeeper、Sqoop)
- 實時內存計算,C#/Java/Go+Redis/MongoDB,輕松做到0.5~5分鐘實時處理,大多數大數據開發工程師只熟悉 Hadoop+Hive,擅長T+1離線計算,對實時計算Spark+HBASE熟悉的不多
題外:其實大家平時借助消息隊列(Kafaka/RocketMQ)異步處理的統計,本身就屬於實時計算數據分析的一種!
該平臺的目標並非替代Hadoop,而是對中小型數據分析提供一種輕量級選擇。
實際上我們大部門就有完整的Hadoop大數據平臺,我們的許多模塊,都跟Hive、HBase、Kafka等有大量的數據交互
未來的日子裏,會根據後面的小數據平臺配套,把相關技術慢慢寫下來。
文章目錄:
借助Redis做秒殺和限流的思考
大數據分析中Redis怎麽做到220萬ops
每天4億行SQLite訂單大數據測試(源碼)
小數據計算平臺配套:
- 關系型數據庫,數據來源以及計算結果存儲,推薦MySql,批量插入5000~50000tps
- Redis,原始數據源預熱,中間計算數據臨時存儲,結果數據緩沖隊列,選Linux/Windows多實例部署,單實例性能8w~10wops
- 計算節點,核心數據分析應用,從數據庫或Redis或微服務讀取原始數據和基礎數據,根據業務規則進行計算,統計結果直接落庫或借助Redis異步落庫
- 調度系統,時間片調度算法,對數據進行切片處理,多實例多線程並行計算,錯誤或超時重試機制。計算節點上跑的分析應用依賴於調度系統
- 服務節點,頻繁且反復讀取的小數據(1000萬~100億)預熱進入Redis,大量部署微服務,封裝各種數據訪問,10萬以下數據直接緩存到進程內存
- 微服務註冊中心,每個服務至少部署2個節點(可用性、負載均衡),大量服務需要管理起來,伸縮擴容
- 配置中心,數據分析應用和微服務的大量伸縮部署,需要有配置中心把數據庫配置等各種配置管理起來
- 監控中心,監控重要計算節點和服務節點,通過微信/短信/釘釘等工具報告緊急情況,或每天提供數據簡報
實際使用根據需要進行調整,如果數據分析項目不多,後面的輔助性配套可以不要。
關於博客,10多年來斷斷續續也寫了不少博文,我寫的博客有個特點,都是經過深思熟慮並且在網絡上很少能找到相關內容的知識點。
關於工作,公司財報提到2018年第二季度包裹量21.16億件,公司名和具體工作內容不方便討論,還請大家見諒和監督!
本文答疑:QQ群1600800,2018-08-12 20:00:00
End.
100億小數據實時計算平臺