網路爬蟲專案開發日誌(三):爬蟲上線準備

qq_33134761發表於2022-02-02

經過這段時間的開發,儘管路途不順暢,但我們還是順利的上線了爬蟲專案的初版,上線的過程也是一波三折,特總結如下:


1、技術選型千萬要慎重,尤其是在第三方框架的跨平臺支援性上需要做好充分的評估,開發人員當初只是在windows平臺做的開發,沒有在linux平臺

上驗證同樣一個技術的可用性,導致到了上線前忍痛割愛,換備選技術方案。

      例如:我們在開發階段,開發哥哥選用谷歌的chrome webdriver來處理被下載網頁的渲染,當初在windows平臺上運作很正常,可到了上整合環境

的時候,發現chrome webdirver的linux安裝包無法安裝,因為該工具包所依賴的底層glibc、glibc++和我們伺服器的cent OS 6.X所提供的相關lib版本

不一致,導致必須升級glibc、glibc++,升級glibc可不是一件輕鬆的事情,需要升級gcc,有著一系列的複雜shell操作,最後,經過評估,我們決定換

firefox webdriver取而代之,firefox的好處在於無需要另外安裝webdriver驅動包,只需要安裝火狐瀏覽器即可,OK,我們安裝好瀏覽器後,系統跑起

來又報錯了:NO Display Specified×××,啥意思,就是centOS未安裝桌面組建,沒有一個對螢幕顯示的支援機制,如果要開啟firefox瀏覽器,必須要

安裝一個虛擬螢幕的程式來支援,這時候,xvfb站出來了,安裝好xvfb,分配一個虛擬的螢幕號,啟動firefox,搞定!


2、對於相對成熟的技術,也需要上linux平臺上去根據實際線上部署請款模擬一遍真實的伺服器之間的資料互動,而不是停留在想當然。

    例如:我們的訊息層是基於redis來開發的,當時開發的時候,訊息的訂閱和釋出其實都是在本機進行的,整個的訊息傳輸處理的流程都能夠測試通

過,但是,到了生產環境後,訊息的釋出和訂閱是由兩臺伺服器分別來進行,當其中一臺伺服器訂閱了另外一臺伺服器的訊息主題後,發現connect

refused,我們檢查了網路許可權,發現Ip、port在tcp層面的傳輸都沒有問題,那是咋回事呢,後經查實,這是redis的安全事物處理機制,如果一臺服務

器需要訪問另外一臺伺服器的redis服務的時候,必須要通過密碼校驗來鑑權,後來設定伺服器密碼後,搞定!


3、充分評價系統的複雜度,儘早考慮將系統相關靜態資訊配置化,否則當系統需要平滑遷移時,書手術腳。

   例如:我們在臨上線前一週,領導要求,所有和外網的互動都要經過一個閘道器係統,大的架構上沒有問題,但對我們爬蟲系統來說,無異於傷筋動骨

了,1、我們所有的httpclient中的外網種子Url都是寫死在程式碼中的,如果要過閘道器係統,意味著必須把所有的種子Url都切換為網管Url,而且還要修改

相關的引數。2、我們頁面解析中的也有很多針對域名的的操作,有寫死在程式碼中的,有通過正規表示式來說明的等等,這些改動點如果細細想來,也

夠我們吃一壺的。3、一個爬蟲任務本身三有著各種屬性來定義此任務模型的,有種子Url、爬取層數、任務開關、爬取頻率、重試次數、重試間隔時間

、等等,如果外部業務有變動的話,在無配置的情況下,爬蟲無法很靈活的跟著變動。


因為系統剛剛上線,肯定還有不少坑,但每填一個坑,我就會更開心一點,因為爬蟲更強大了一點。



相關文章