由于scrapy框架需要更多的學(xué)習(xí)成本宁舰,還有分布式爬蟲也需要redis來實(shí)現(xiàn),調(diào)度方式也不是很符合業(yè)務(wù)要求,于是就自己設(shè)計了個分布式爬蟲架構(gòu)矢否。
架構(gòu)圖如下:
架構(gòu)圖
爬蟲的客戶端為tornado編寫的服務(wù),爬蟲管理器也是tornado編寫的后臺管理服務(wù)脑溢,主要功能:獲取客戶端的狀態(tài)信息僵朗,爬蟲進(jìn)程數(shù)量,啟動指定數(shù)量的爬蟲進(jìn)程屑彻,中斷验庙、重啟爬蟲,爬蟲異常通知等社牲。
爬蟲進(jìn)程與調(diào)度器間的請求非常頻繁粪薛,所以使用socket長連,獲取優(yōu)先級高的隊(duì)列搏恤,調(diào)度器的優(yōu)先級算法违寿,根據(jù)業(yè)務(wù)需求來編寫。
消息隊(duì)列使用rabbitmq熟空,而不用redis藤巢,因?yàn)閞abbitmq的消息確認(rèn)機(jī)制,能夠保證每個要爬的url都能被成功請求痛阻,不會因?yàn)槟承┊惓6鴮?dǎo)致數(shù)據(jù)漏爬菌瘪。
爬回的數(shù)據(jù)看業(yè)務(wù)需求,可以直接入庫阱当,或者放入Kafka俏扩。建議先不進(jìn)行數(shù)據(jù)清洗,避免偶爾數(shù)據(jù)清洗錯誤時弊添,又要重新爬取录淡。
求offer:php,python后端,或者爬蟲
歡迎一起交流學(xué)習(xí)