架構設計原則:
1、不過度設計,所有設計都是本著服務業務的初心。
2、保留足夠的可拓展性
3、開發成本降至最低(學習成本+開發時效+開源技術優先+去ioe)
架構設計計畫:
一言不合,先上圖,下面是爬蟲系統架構目標,分為三個階段如下:
一期:業務上的需求是,按需爬取網頁,而且查詢的體量也會很小,因為公司業務剛剛起步,所以ok,我們架構的側重點就是查詢的時效,也就是爬取並返回結果的時效上了。
所以兩點,1)爬取的話盡量不用webriver,直接採用httpclient提起請求;2)通過mq來解耦爬取層和dal持久層
所以,一期我們的系統流程如下,所有的後台開發都是模組化,方便後期拓展,mq選型初步定在redis。
但是,經過實際實施過後,我們發現以下兩個問題
1、每次介面請求,都去爬取的話會極大的增加響應rt,帶來的使用者體驗非常差。
2、restful介面端和spider爬蟲業務耦合太緊密,不利於後期業務的拓展。
針對這兩點,我們作出以下兩點改動:
1、我們的介面服務端首先去db查詢記錄直接返回給前端,假如db中沒有相關記錄,首先我們會返回前端查詢失敗,
於此同時我們推一條訊息到mq佇列中,由消費端去做爬取和持久化的操作,時候會告知前端我們已經爬取入庫成功。
2、在restful介面和mq之間加乙個servicedispatch層用來轉接查詢請求的,前端只需要傳查詢引數+任務類別之類的資訊過來,
servicedispatch會傳送對應的訊息到指定的topic中。
流程圖演化如下:
所以,架構1.0展示如下:
開工!!
網路爬蟲專案開發日誌(五) 爬蟲協議初探
前言 常在河邊走,哪有不濕鞋 有的時候,網路爬取就像串門一樣,如果守規矩的話,是需要先打個 給主人預約一下,或是進門的時候先敲門看看主人是否在家,如果主人允許咱進去,咱再進去,進去後,也不要東摸摸西看看,否則主人是會發飆了,搞不好就會逐客了。概念 網路爬取領域,也是一樣的,也有著通用的規範,稱之為機...
網路爬蟲二
網路抓取系統分為核心和擴充套件元件兩部分。核心部分是乙個精簡的 模組化的爬蟲實現,而擴充套件部分則包括一些便利的 實用性的功能。目標是盡量的模組化,並體現爬蟲的功能特點。這部分提供簡單 靈活的api,在基本不改變開發模式的情況下,編寫乙個爬蟲。擴充套件元件部分提供一些擴充套件的功能,內建了一些常用的...
網路爬蟲二
一 正規表示式 正規表示式 regular expression 又稱規則表示式,它是對字串操作的一種邏輯公式,即用事先定義好的一些特定字元以及這些特定字元的組合,組成乙個 規則字串 這個 規則字串 用來表達對字串的一種過濾邏輯。電腦科學的乙個概念。正規表示式通常被用來檢索 替換那些符合某個模式 規...