




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、;自制分布式爬蟲系統(tǒng)北京數(shù)人科技有限公司 doc.dataman-inc單機的 All-In-One 爬蟲架構控制模塊抓取模塊抽取模塊HA Proxy各地代理URLHTML模板模板結果結果JSONXML遞歸遞歸URL有狀態(tài)解析JS、地區(qū)代理、調速登陸利用JavaEE容器的線程池、共享狀態(tài);分布式和微服務是 Silver Bullet 么?分布式和微服務的優(yōu)點分布式和微服務的優(yōu)點特定模塊單獨開發(fā)和測試(特定模塊單獨開發(fā)和測試()容易對特定模塊進行橫向擴展容易對特定模塊進行橫向擴展 (YES)整體可靠性更高整體可靠性更高 (?)(?)效力以及代碼可以重用效力以及代碼可以重用 (YES)離線和在線類
2、型服務可以混合部署離線和在線類型服務可以混合部署 (Great);做最壞的打算,祈禱最好的結果上云的上云的 Check List服務單元功能越單一越好服務單元功能越單一越好計算模塊要做到無狀態(tài)不依賴本地計算模塊要做到無狀態(tài)不依賴本地 I/O)任何服務都不能有單點,必須做集群任何服務都不能有單點,必須做集群可能的話,模塊間接口盡量異步可能的話,模塊間接口盡量異步分布式的配置管理,分布式的配置管理,Rolling Update/Restart各個層面的集中式監(jiān)控和日志方案各個層面的集中式監(jiān)控和日志方案設計時做最壞打算設計時做最壞打算 每個模塊都可能失每個模塊都可能失效,而且無法及時報警效,而且無法
3、及時報警 ;Step 1. 拆服務,建集群控制服務抓取服務抽取服務結果聚合效力HA Proxy獲取結果控制服務抓取服務抽取服務結果聚合效力最終結果中間結果 盡量利用Docker本身多實例,避免復雜的多線程編程 因為任務并行運行,所以需要保存中 間結果,最后進行歸并;Step 2. 接口異步化控制服務抓取服務抽取服務結果聚合效力HA Proxy獲取結果控制服務抓取服務抽取服務結果聚合效力URLCookieHTMLRabbitMQ:異步、服務發(fā)現(xiàn)、中間結果存儲JSON;Step 3. 無狀態(tài)、無狀態(tài)、無狀態(tài)控制服務抓取服務抽取服務結果聚合效力HA Proxy獲取結果控制服務抓取服務抽取服務結果聚合
4、效力URLCookieSessionIDHTMLSessionIDJSONSessionIDPages(JSON)SessionIDSessionIDSessionID問題:異步抓取的時候鏈接去重2. 某次同步請求是否抓全Reddis ClusterSessionID; Step 4 集群化 服務發(fā)現(xiàn)、負載均衡 HTTP接口 ZooKeeper/etcd 使用Marathon + Bamboo + HAProxy 進行服務發(fā)現(xiàn) RabbitMQ接口 通過監(jiān)聽MQ實現(xiàn)服務發(fā)現(xiàn) MongoDB 如果不考慮自動擴展,使用既有的集群方案 Reddis 可以采用Codis方案;Step 5 離線和在線服
5、務混合部署 離線服務吞吐很高,爬取模塊隊列經(jīng)常破百萬 在線服務要求實時性- MQ 集群化集群化- 隊列設置優(yōu)先級隊列設置優(yōu)先級:/rabbitmq/federated-queues.html;Step 6 全局配置熱更新 問題: 如何全局改變常用小參數(shù)的配置變化少,使用頻繁) 如何全局改變體量較大的全局共享數(shù)據(jù)體積大、變化較多) 寫代碼的時候提前做好熱讀取參數(shù)的機制PUSH使用使用ZooKeeper/etcd來同步小來同步小參數(shù)參數(shù)PULL使用使用Reddis之類配置服務器之類配置服務器來存儲較大的共享數(shù)據(jù)來存儲較大的共享數(shù)據(jù);Step 7. 摩爾定律腦補: 每個組件都可能失效每個步驟都可能中
6、斷狀態(tài)不一致咋辦、消息會不會丟、消息堆積會不會造成OOM、會不會僵尸進程和數(shù)據(jù) 設置任務超時當取結果的時候,如果超時就返回當前的部分結果設置定時 Cleaner定時梳理所有任務,如果全局超時就認為任務已經(jīng)完成設置自動拋棄機制超過一定限度就拋棄舊的信息;Step 8 日志和監(jiān)控使用使用ELK或者或者MongoDB來收集應用和來收集應用和stdout/Err的日志的日志Elasticsearch + Logstash/Fluentd + Kibana日志要添加應用名稱日志要添加應用名稱 /Docker ID/SessionID 等等等便于篩查的信息等便于篩查的信息運用運用 Graphite 來監(jiān)控
7、吞吐量等性能指標來監(jiān)控吞吐量等性能指標運用運用 ELK 來進行應用層的被動監(jiān)控和報警來進行應用層的被動監(jiān)控和報警使用輪詢使用輪詢 health check 服務來監(jiān)控關鍵組件的狀服務來監(jiān)控關鍵組件的狀態(tài)態(tài)使用監(jiān)控寶等等來進行端到端的黑盒監(jiān)控使用監(jiān)控寶等等來進行端到端的黑盒監(jiān)控使用使用Zabbix來進行物理層報警來進行物理層報警;云上的操作系統(tǒng) 分布式操作系統(tǒng)LinuxMesos(DCOS)GoogleAWS資源管理資源管理KernelMesosBorg進程進程KernelDockerLXCEC2進程調度進程調度init.d,CronMarathon,chronosBorgCloudFormat
8、ion進程間通信進程間通信SocketXXX MQSQS存儲存儲EXT4Ceph、HDFSGFS,ColossusEFS,S3,EBS應用應用編程語言Docker、Spark、MR容器、MREMR 等等服務發(fā)現(xiàn)服務發(fā)現(xiàn)N/ABambooBorg Name System數(shù)據(jù)存儲數(shù)據(jù)存儲N/ARedis、MongoBT、Spanner、MegastoreDynamo,EC,RDS分布式一致性分布式一致性N/AZK,etcdchubby日志日志Stdout,stderrELKBorg log server, ecatcher,sawmillEMR配置配置ZK+RedisBorg COnfig監(jiān)控監(jiān)控Zabbix 等等Dapper,CPICloudwatch;云計算時代的技術棧將完全變化Dell HP CISCOMicrosoft RedhatOracle IBMIBM SAP ISV渠道資源型線下集成商業(yè)務技術型云集成商開源技術 + 云端服務專有技術 + 線下服務;云計算時代的編程和運維范式 上云的過程 如何把大象放到盒子里 運用 Docker 來封裝應用,爭取服務化 服務發(fā)現(xiàn),集中配置管理 應用邏輯和數(shù)據(jù)分離 然后把盒子搬起來
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 失誤匯報協(xié)議
- 護理質量標準及管理制度
- 幼兒園小學秋游安全教育
- 辛集中學高三語文一輪復習組合練
- 阿壩職業(yè)學院《影像電子學基礎》2023-2024學年第一學期期末試卷
- 隴東學院《巖土工程測試與監(jiān)控》2023-2024學年第二學期期末試卷
- 陜西中醫(yī)藥大學《外國文學I》2023-2024學年第一學期期末試卷
- 陜西國防工業(yè)職業(yè)技術學院《勞動實踐》2023-2024學年第二學期期末試卷
- 陜西學前師范學院《新型材料毒理學評價》2023-2024學年第二學期期末試卷
- 陜西工商職業(yè)學院《數(shù)字媒體設計與制作》2023-2024學年第一學期期末試卷
- DB32T 3916-2020 建筑地基基礎檢測規(guī)程
- 公務員登記表
- 自動控制原理全套課件
- 質量部KPI考核指標
- 工程經(jīng)濟學武獻華第5版答案
- 肩關節(jié)鏡下肩袖修補術的護理查房ppt
- 菠菜色素提取和分離
- 功能陶瓷-1電介質陶瓷‘
- 計算機考試Excel操作題原題及操作步驟82435
- (高清版)輻射供暖供冷技術規(guī)程JGJ142-2012
- 教育個案的研究記錄
評論
0/150
提交評論