




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于zookeeper和storm的車載流式計算框架摘要n 案例背景n 日本第一車載SAAS平臺n 案例需求n 數(shù)據(jù)量劇增,吞吐量劇增n 車載機數(shù)量劇增+數(shù)據(jù)庫連接數(shù)劇增n 任務分布不均導致實時性無法滿足n 案例技術方案n 案例技術方案概覽n 數(shù)據(jù)存儲平臺MongoDBn 實時計算平臺Stormn 集群協(xié)調ZooKeepern 最佳實踐n MongoDB介紹及最佳實踐n Storm介紹及最佳實踐n ZooKeeper介紹及最佳實踐n 架構不足及經(jīng)驗分享案例背景1業(yè)務背景n 業(yè)務場景 物流公司 校車安全 油氣公司 n 主要功能 運行數(shù)據(jù)記錄 監(jiān)視駕駛 違規(guī)警告 績效考評 報表輸出 危險地帶 實時
2、監(jiān)控日本市場占有率第一,積極拓展國內業(yè)務WebAPP中間件層硬件層通信層分析計算層1分析計算層2Web ServerWriteWriteWriteReadWritePollingReadRMDBPrimitiveLog基本Bs_WorkSheetBs_TimeChartBs_FreqDataBs_DigiData集計Master設定動態(tài)管理RMDBPrimitiveLog基本Bs_WorkSheetBs_TimeChartBs_FreqDataBs_DigiData集計Master設定動態(tài)管理RMDBPrimitiveLog基本Bs_WorkSheetBs_TimeChartBs_FreqDa
3、taBs_DigiData集計Master設定動態(tài)管理案例背景2技術背景市場競爭激烈,維持第一的保證PAAS一 數(shù)據(jù)量劇增+吞吐量劇增2013年車輛數(shù):10000臺數(shù)據(jù)量:3000w/天吞吐量:80M/S ()1000200040005000700010000050001000015000200220042006200820102012車輛數(shù)車輛數(shù)車両數(shù):10000Commn ServerAnalysisServerStasticServer分時日月年bs_primitiveLogWRW-62,3403,722,15729,763,261654,722,397 7,856,6448,198bs
4、_WorkSheet-RWRW8,422504,8754,032,87488,704,7821,064,448,769bs_TimeChart-RWRW10,873600,8744,804,430105,600,1001,267,200,296bs_FreqData-WR45027,0964216,7846,480,54077,760,054bs_DegitachoData-W-1,01060,079480,10010,560,006126,720,190數(shù)據(jù)特性Heavy Write Heavy Read Past Useless2015年車輛數(shù):100000臺數(shù)據(jù)量:30000w/天吞吐量
5、:800M/S:車載機發(fā)送數(shù)據(jù)最高頻率2次/秒,每次發(fā)送4KB數(shù)據(jù)。10000臺車載機的峰值為10000*2*4KB =80000KB=80M/S :從這個數(shù)據(jù)可以算出實際平均吞吐量是62340*4KB/60 = 4M/s, 但是固定時間點車載機會同時向云端發(fā)送運行數(shù)據(jù)()此表抽出通信中間件分析集計中間件DBbs_primitiveLogbs_WorkSheetbs_TimeChartbs_FreqDatabs_DegitachoData設置信息寫原始日志表車載機數(shù)據(jù)二 連接數(shù)劇增+客戶劇增DB1DB2DB3DBn 通信服務器與各個業(yè)務DB建立長連接 目前的SAAS平臺已經(jīng)有600租戶 每個通
6、信服務器要與600個DB建立數(shù)據(jù)庫連接歸一化迫在眉睫NoSQL10W車輛時:1.需要17臺通信服務器2.峰值:10W*8KB/S=800MB/S數(shù)據(jù)量長尾來襲 現(xiàn)在有600個客戶公司,未來?三 分析計算程序任務不均勻+實時性不夠DB1DB2DB3DBnAnalysis ProcessAnalysis ProcessAnalysis ProcessAnalysis Processn 現(xiàn)狀 同一公司的車輛數(shù)據(jù)分布在同一數(shù)據(jù)庫 分析計算進程與DB一對一地分析數(shù)據(jù)n 問題 若一個公司有很多輛車,那么一個分析計算進程應付不過來,無法分散計算 若一個公司車輛很少,那么該公司對應的分析進程將沒有任務,浪費服
7、務器資源 因為分析進程的緩慢執(zhí)行,車輛的實時運行數(shù)據(jù)無法反映到客戶端案例技術方案概覽案例技術方案概覽通信集群消息隊列+存儲計算集群數(shù)據(jù)庫集群協(xié)調集群應用集群接受連接負載均衡通信直連事件網(wǎng)絡消息發(fā)布消息訂閱數(shù)據(jù)庫操作存儲消息負載均衡-數(shù)據(jù)分片主從備份負載均衡無模式數(shù)據(jù)分解數(shù)據(jù)分析數(shù)據(jù)統(tǒng)計日志分析數(shù)據(jù)存儲模式隔離私有倉庫節(jié)點管理任務分配狀態(tài)維護Open APIBrowseripadPhoneLibeventKafkaMongoDBStormSQL ServerZooKeeperIIS、WCF數(shù)據(jù)存儲平臺MongoDBMongoDB是一個介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間的產(chǎn)品,是非關系數(shù)據(jù)庫當中功能
8、最豐富,最像關系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結構非常松散,是類似json的bjson格式,因此可以存儲比較復雜的數(shù)據(jù)類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現(xiàn)類似關系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。它的特點是高性能、易部署、易使用,存儲數(shù)據(jù)非常方便。主要功能特性有: 面向集合存儲,易存儲對象類型的數(shù)據(jù) 模式自由 支持動態(tài)查詢 支持完全索引,包含內部對象 支持查詢 支持復制和故障恢復 使用高效的二進制數(shù)據(jù)存儲,包括大型對象(如視頻等) 自動處理分片,以支持云計算層次的擴展性 支持RUBY,PYTHON,JAVA,C+,
9、PHP等多種語言。 文件存儲格式為BSON(一種JSON的擴展) 可通過網(wǎng)絡訪問數(shù)據(jù)量劇增和連接數(shù)劇增的解決辦法n 高頻讀寫表抽出n 1公司:1DB模式N公司:1DBDB1DB2DB3DBnDB1DB1DB2DB3DBn選擇MongoDB的原因n 增刪改查操作最接近SQL,遷移容易,并可為其他業(yè)務使用n 支持數(shù)據(jù)的自動和手動分片,橫向擴展容易n 性能測試結果接近預期,夠用即可,不用追求完美n 支持數(shù)據(jù)復制、故障轉移、橫向擴展,基本符合RAS需求CAP定理性能關系不大2個mongos,3個分片,非安全插入:單獨執(zhí)行時:寫線程10個并發(fā)時,每秒37000次寫入讀線程4個并發(fā)時,每秒43000次讀取
10、同時執(zhí)行時:寫線程10個并發(fā)時,每秒達25000次寫入讀線程4個并發(fā)時,每秒達36000次讀?。篊PU 3.2GHz MEM 16G 千兆網(wǎng)卡MongoDB最佳實踐n 邏輯部署和物理部署n 存儲結構設計n 定期數(shù)據(jù)清除ShardsLoad BalanceConfig serverReplica setsmongosmongosmongosmongodmongodmongodmongodmongodmongodmongodmongodmongodmongodmongodmongodC 2mongodC1 mongodC3 mongodclientMongoDB的部署邏輯架構client192.1
11、68.0.2192.168.0.3192.168.0.4192.168.0.5192.168.0.6Shard1(master) Shard2(master)Shard3(master)Shard1(slave)Shard1(arbiter)Shard2(slave) Shard3(slave)Shard1(slave)Shard3(slave)Shard2(arbiter)Shard3(arbiter) Shard1(arbiter)Shard2(arbiter)Shard2(slave)Shard3 (arbiter)Config server1Config server2mongosmo
12、ngosmongosShard1:192.168.0.2,192.168.0.5,192.168.0.4,192.168.0.3,192.168.0.6(arbiter)Shard2:192.168.0.3,192.168.0.5,192.168.0.2,192.168.0.4,192.168.0.6(arbiter)Shard3:192.168.0.4,192.168.0.5,192.168.0.3,192.168.0.2,192.168.0.6(arbiter)Config Server1:192.168.0.2Config Server2:192.168.0.3Mongos:192.16
13、8.0.4,192.168.0.5,192.168.0.6MongoDB部署物理架構存儲數(shù)據(jù)結構設計 “v”: “DTS19982221” “r”: “t” : 2013-11-14T08:17:00.016Z “d” : ”xxxxxxxxxxxxxxxxxx” “o” : “yyyyyyyyyyyyyyyyyy” , “t” : 2013-11-14T08:19:38.342Z“ “d” : ”xxxxxxxxxxxxxxxxxx” “o” : “yyyyyyyyyyyyyyyyyy” “s”: “zzzzz” 名字段要短 db.vehicle.save(“v”:” DTS19982221
14、 ”, “r: “t: 201399988772, “d”:”xxxxxxxxxxxxxxxx”,”o”:”yyyyyyyyyyy” db.vehicle.find(“v”:” DTS19982221 ”, “r: $elemMatch: “t:$gte: 201309898876251728定期數(shù)據(jù)清除n 清理程序(MonDC)運行在ZooKeeper集群上,自身無狀態(tài)n 清理程序(MonDC)監(jiān)視MongoDB內存使用量n 清理程序(MonDC)檢測刪除過期數(shù)據(jù)實時計算平臺Storm與Hadoop類似,Storm為分布式實時計算提供了一組通用原語。可被用于“流處理”之中,實時處理消息并更新
15、數(shù)據(jù)庫。這是管理隊列及工作者集群的另一種方式。Storm也可被用于“連續(xù)計算”, 對數(shù)據(jù)流做連續(xù)查詢,在計算時就將結果以流的形式輸出給用戶。它還可被用于“分布式RPC”,以并行的方式運行昂貴的運算。Storm的主工程師Nathan Marz表示:Storm可以方便地在一個計算機集群中編寫與擴展復雜的實時計算,Storm之于實時處理,就好比Hadoop之于批處理。Storm保證每個消息都會得到處理,而且它很快在一個小集群中,每秒可以處理數(shù)以百萬計的消息。更棒的是你可以使用任意編程語言來做開發(fā)。Storm的主要特點如下: 簡單的編程模型 可以使用各種編程語言 容錯性 水平擴展 可靠的消息處理 快速
16、Storm為什么號稱實時計算系統(tǒng)?n 計算基于內存,較之磁盤有數(shù)量級之差n 使用消息隊列做數(shù)據(jù)傳輸,速度比數(shù)據(jù)庫快很多n 使用流式計算思想,數(shù)據(jù)可以源源不斷的被處理n 任何一個節(jié)點都可以將中間計算結果反饋給用戶為什么選擇Storm?n 無需維護消息隊列(Topic、LB、Broker),專注Producer&Consumern 滿足業(yè)務需求,適合業(yè)務場景n 社區(qū)活躍,版本更新快n 性能卓越,易擴展Storm里的核心概念n Tuple&StreamTupleTupleStreamn Topology&Spout&BoltSpoutBoltBoltBoltBoltBoltClusterStorm里
17、的核心概念n Nimbus&Supervisor&Worker&TaskNimbusZooKeeperSupervisorZooKeeperZooKeeperSupervisorSupervisorSupervisorSupervisorWorkerTask:SpoutTask:BoltTask:Bolt提交代碼,分配任務,監(jiān)視Supervisor運行業(yè)務拓撲線程進程Storm里的核心概念n Stream GroupingSpoutBoltABoltBoltBBoltBoltCI know who am IIKnow:1whoamI:1IknowI:1who:1am:1NOT PASS問題:如
18、何保證tuple按照予定的路徑發(fā)送到指定Bolt呢?Storm里的核心概念n Stream GroupingShuffle Grouping 隨機分組, 隨機派發(fā)stream里面的tuple.Fields Grouping 按字段分組,具有同樣字段的tuple會被分到相同的Task。All Grouping 廣播發(fā)送, 對于每一個tuple, 所有的Bolts都會收到。Global Grouping 全局分組, 這個tuple被分配到storm中的一個bolt的其中一個task。再具體一點就是分配給id值最低的那個task。Non Grouping 不分組, 這個分組的意思是說stream不關
19、心到底誰會收到它的tuple。Direct Grouping 直接分組, 這是一種比較特別的分組方法,用這種分組意味著消息的發(fā)送者指定由消息接收者的哪個task處理這個消息。Storm里的核心概念n Stream GroupingBoltABoltBBoltABoltBBoltABoltBBoltABoltBAllFieldsShuffleGlobalStorm最佳實踐n 計算拓撲設計n 數(shù)據(jù)順序性保證n 基于統(tǒng)計的Worker和Task數(shù)值設置計算拓撲設計n 數(shù)據(jù)輸入 FetchSpout MongoDB中讀取車輛運行數(shù)據(jù)n 分析處理 AnalysisBolt 解碼運行數(shù)據(jù),如經(jīng)緯度、違反等
20、n 數(shù)據(jù)準備 DataPreBolt 為集計所需要的數(shù)據(jù)作準備,會與數(shù)據(jù)庫交互n 集計處理 StasticBolt 統(tǒng)計一段時間或一天的運行數(shù)據(jù)n 數(shù)據(jù)庫寫 DBWBolt 所有涉及寫數(shù)據(jù)庫的操作由此BOLT完成計算拓撲設計MongoDBFetchSpoutAnalysisBoltAnalysisBoltAnalysisBoltDataPreBoltDataPreBoltDBWBoltDBWBoltCompany 1Company 2Company 3Company 4DBMLayerStasticBoltStasticBoltFetchSpoutFetchSpoutAnalysisBoltA
21、nalysisBoltSpoutDataCollBoltDataCollBoltStasticBoltStasticBoltFileds GroupingFileds GroupingFileds GroupingDTS0002, XXXXXXDTS0001, XXXXXXDTS0001, YYYYYDTS0002, YYYYYDTS0001, ZZZZZZZDTS0002, ZZZZZZZFields Grouping 按字段分組, 比如按VehicleId的模n結果來分組, 具有同樣VehicleId的tuple會被分到相同的Bolts, 而不同的userid則會被分配到不同的Bolts。
22、計算拓撲設計順序性如何保證最大效率化基于統(tǒng)計的計算量均勻化最佳參數(shù)設置 通過反復的測試,得到一個接近能夠處理完數(shù)據(jù)的比例設置,這里是2:10. 按照一個最佳數(shù)值設置建議:Worker個數(shù)是機器的整數(shù)倍,Task是Worker的整數(shù)倍。我們有7臺機器作為Supervisor,所以Worker數(shù)設置為7,Task數(shù)值為14,于是得到FetchSpout個數(shù)為2,AnalysisBolt個數(shù)為12. 以上設置后,計算延時降低到1.3s左右Storm Cluster Number: 8Zookeeper簡介 Zookeeper是Google的Chubby一個開源實現(xiàn),是高有效和可靠的協(xié)同工作系統(tǒng)。 Z
23、ookeeper能夠用來leader選舉,配置信息維護等,在一個分布式的環(huán)境中,需要一個Master實例或存儲一些配置信息,確保文件寫入的一致性等。 ZooKeeper是一個分布式的,開放源碼的分布式應用程序協(xié)調服務,包含一個簡單的原語集,是Hadoop和Hbase的重要組件。 目前提供Java和C的接口。n 誰在用ZooKeepern ZooKeeper是什么lZooKeeper軟件維護的是一個樹形的數(shù)據(jù)結構l從任一個ZooKeeper節(jié)點看,樹視圖都一樣/root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subData
24、Node1 /subDataNode2 /subDataNode1lZooKeeper集群維護的是一個樹形的數(shù)據(jù)結構/root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1/root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1/root /dataNode1 /dataNode2 /dataNode3
25、 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1/root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1/root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1寫操作lZooKeeper各節(jié)點之間的數(shù)據(jù)結構是同步的/root
26、 /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1Zookeeper核心概念數(shù)據(jù)結構Zookeeper核心概念節(jié)點類型節(jié)點特點功能PERSISTENT持久化目錄節(jié)點,節(jié)點數(shù)據(jù)不會丟失保存配置文件,小量數(shù)據(jù)存儲PERSISTENT_SEQUENTIAL順序自動編號目錄節(jié)點隊列,共享鎖等EPHEMERAL臨時目錄節(jié)點,客戶端斷開即消失作為客戶端連接狀態(tài)的監(jiān)控節(jié)點EPHEMERAL_SEQUENTIAL臨時自動編號目錄節(jié)點同上,但可作為隊列/root /dataNode1 /dataNode2 /dataNode
27、3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1n 統(tǒng)一命名服務(Name Service)n 配置管理(Configuration Management)n 集群管理(Group Membership)n 共享鎖(Locks)n 隊列管理 (Queue Management)Zookeeper的應用場景ZooKeeper的使用n 協(xié)調數(shù)據(jù)清理( MonDC )n 協(xié)調任務分配(TaskDistribute)n 協(xié)調Spout對MongoDB的數(shù)據(jù)訪問n 集群節(jié)點監(jiān)控數(shù)據(jù)清理程序( MonDC )開始MongoDB輪詢清理警戒是否/shardProcTime /shard1:2013000912 /shard2:2013000523 /shard3:2013000943 /shard4:2013000125 /shard5:2013000229mongostat任務分配程序(TaskDistribute) spoutTasks |
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)頁建設合同范本
- 科技前沿基于大數(shù)據(jù)的智能交通管理平臺構建
- 二零二五年民間私人房產(chǎn)質押房產(chǎn)抵押借款合同爭議解決條款
- 2025年度解除勞動合同員工經(jīng)濟補償金核算及發(fā)放合同
- 抵押借款協(xié)議書(二零二五年度)-智能交通系統(tǒng)建設
- 科技引領的現(xiàn)代物流產(chǎn)業(yè)升級
- 感謝生活作文600字十篇
- 2025年安徽體育運動職業(yè)技術學院單招職業(yè)傾向性測試題庫及答案1套
- 現(xiàn)代企業(yè)組織結構變革與趨勢
- 婚慶合同無故終止合同范本
- 內蒙古自治區(qū)商品房買賣合同(現(xiàn)售)示范文本
- (2024年更新)國家慢性疾病編碼新目錄
- 《腦膠質瘤診療指南2024版》解讀
- 稅務會計崗位招聘面試題與參考回答2024年
- 學校開學安全隱患自查表
- 經(jīng)濟法學學習通超星期末考試答案章節(jié)答案2024年
- 浙江寧波前灣控股集團有限公司招聘筆試題庫2024
- 結構化學(PDF電子書)
- 產(chǎn)科腹部四步觸診要點
- 第10課 人類社會及其發(fā)展規(guī)律-【中職專用】2024年中職思想政治《哲學與人生》金牌課件(高教版2023·基礎模塊)
- SLT 478-2021 水利數(shù)據(jù)庫表結構及標識符編制總則
評論
0/150
提交評論