實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)
原文鏈接
1. 典型的數(shù)據(jù)采集分析系統(tǒng)
- 數(shù)據(jù)采集
- 數(shù)據(jù)傳輸
- 數(shù)據(jù)清洗/建模/存儲(chǔ)
- 數(shù)據(jù)統(tǒng)計(jì)/分析/挖掘
- 數(shù)據(jù)可視化/反饋
現(xiàn)代化系統(tǒng)都要借鑒大數(shù)據(jù)優(yōu)秀的開源解決方案,所以都是架構(gòu)在Java上
2. 攜程的實(shí)現(xiàn)
- 客戶端數(shù)據(jù)采集:手機(jī)SDK
- 后端業(yè)務(wù):登入后日志/訂單等(基于UID)
- 數(shù)據(jù)清洗直到挖掘:基于
Netty的網(wǎng)絡(luò)框架方案
- 數(shù)據(jù)即時(shí)調(diào)用的消息隊(duì)列:基于
Kafka
數(shù)據(jù)存儲(chǔ)
* Hadoop
* Storm
* OLAP
* HBase 主要做系統(tǒng)檢測(cè)
3. 技術(shù)組件特性
1) Netty 和Nginx主要區(qū)別是全異步
- 內(nèi)置多種數(shù)據(jù)編碼解碼功能,支持多種網(wǎng)絡(luò)協(xié)議
- 高性能
- 可擴(kuò)展性
- API的易用性
- 成功的商業(yè)應(yīng)用
2) 加密/壓縮方案
- 主要是解決可逆加密的客戶端(JS/APP)秘鑰存儲(chǔ)問(wèn)題
- 使用
Emscripten把C代碼轉(zhuǎn)化為JS代碼
3) 消息機(jī)制
對(duì)消息存儲(chǔ)方式的對(duì)比
* MySQL適于消息量中等,并對(duì)消息治理有較高要求的場(chǎng)景
* Kafka 適于大量群發(fā)消息, 且對(duì)實(shí)時(shí)性要求不高的場(chǎng)景
* `Broker` 分布式文件存儲(chǔ)(是Kafka的擴(kuò)展)
4) Kafka 的技術(shù)特性
- 消息持久化能力,和大數(shù)據(jù)量情況下的高性能訪問(wèn)
- 高吞吐率
- 支持消息分區(qū)存儲(chǔ)后的分布式消息,即保證分區(qū)后的消息順序
- 支持離線或?qū)崟r(shí)數(shù)據(jù)處理
- 支持在線水平擴(kuò)展
Scale out
典型的Kafka集群組成和運(yùn)行模式
* 若干`Producer`(即消息產(chǎn)生源)
* 若干`Broker`(即吞吐集群)
* 若干`ConsumerGroup`
* 以及一個(gè)`Zookeeper`集群
* Kafka通過(guò)Zookeeper管理集群配置,選舉leader,以及在ConsumerGroup發(fā)生變化時(shí)進(jìn)行rebalance
* Producer 使用push 模式講消息發(fā)布到broker,Consumer 使用pull 模式從broker訂閱并消費(fèi)消息
5) 基于Avro格式的實(shí)時(shí)數(shù)據(jù)災(zāi)備存儲(chǔ)
主要指當(dāng)網(wǎng)絡(luò)嚴(yán)重阻塞/中斷,或系統(tǒng)突發(fā)故障時(shí),臨時(shí)數(shù)據(jù)緊急保存方式并待恢復(fù)后迅速處理,并不是永久化災(zāi)備
Avro是一個(gè)數(shù)據(jù)序列化反序列化框架,可以將數(shù)據(jù)對(duì)象轉(zhuǎn)化為便于存儲(chǔ)的格式
4. 方案可行性和數(shù)據(jù)對(duì)比
使用ApacheBenchmark進(jìn)行性能壓力測(cè)試
5. 系統(tǒng)工具
- 單用戶瀏覽跟蹤
- 頁(yè)面轉(zhuǎn)化率
- 用戶訪問(wèn)流
- 點(diǎn)擊熱力圖
- 采集數(shù)據(jù)驗(yàn)證測(cè)試
- 系統(tǒng)性能報(bào)表
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。