大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java多線程爬蟲及分布式爬蟲架構

Java多線程爬蟲及分布式爬蟲架構

更新時間:2020-01-09 16:08:05 來源:動力節點 瀏覽2589次


  在我們調試爬蟲程序的時候,單線程爬蟲沒什么問題,但是當我們在線上環境使用單線程爬蟲程序去采集網頁時,單線程就暴露出了兩個致命的問題:


Java 多線程爬蟲及分布式爬蟲架構


  采集效率特別慢,單線程之間都是串行的,下一個執行動作需要等上一個執行完才能執行


  對服務器的CUP等利用率不高,想想我們的服務器都是 8核16G,32G 的只跑一個線程會不會太浪費啦


  線上環境不可能像我們本地測試一樣,不在乎采集效率,只要能正確提取結果就行。在這個時間就是金錢的年代,不可能給你時間去慢慢的采集,所以單線程爬蟲程序是行不通的,我們需要將單線程改成多線程的模式,來提升采集效率和提高計算機利用率。


  多線程的爬蟲程序設計比單線程就要復雜很多,但是與其他業務在高并發下要保證數據安全又不同,多線程爬蟲在數據安全上到要求不是那么的高,因為每個頁面都可以被看作是一個獨立體。要做好多線程爬蟲就必須做好兩點:第一點就是統一的待采集 URL 維護,第二點就是 URL 的去重, 下面我們簡單的來聊一聊這兩點。


  維護待采集的 URL


  多線程爬蟲程序就不能像單線程那樣,每個線程獨自維護這自己的待采集 URL,如果這樣的話,那么每個線程采集的網頁將是一樣的,你這就不是多線程采集啦,你這是將一個頁面采集的多次。基于這個原因我們就需要將待采集的 URL 統一維護,每個線程從統一 URL 維護處領取采集 URL ,完成采集任務,如果在頁面上發現新的 URL 鏈接則添加到 統一 URL 維護的容器中。下面是幾種適合用作統一 URL 維護的容器:


  JDK 的安全隊列,例如 LinkedBlockingQueue


  高性能的 NoSQL,比如 Redis、Mongodb


  MQ 消息中間件


  URL 的去重


  URL 的去重也是多線程采集的關鍵一步,因為如果不去重的話,那么我們將采集到大量重復的 URL,這樣并沒有提升我們的采集效率,比如一個分頁的新聞列表,我們在采集第一頁的時候可以得到 2、3、4、5 頁的鏈接,在采集第二頁的時候又會得到 1、3、4、5 頁的鏈接,待采集的 URL 隊列中將存在大量的列表頁鏈接,這樣就會重復采集甚至進入到一個死循環當中,所以就需要 URL 去重。URL 去重的方法就非常多啦,下面是幾種常用的 URL 去重方式:


  將 URL 保存到數據庫進行去重,比如 redis、MongoDB


  將 URL 放到哈希表中去重,例如 hashset


  將 URL 經過 MD5 之后保存到哈希表中去重,相比于上面一種,能夠節約空間


  使用 布隆過濾器(Bloom Filter)去重,這種方式能夠節約大量的空間,就是不那么準確。


  關于多線程爬蟲的兩個核心知識點我們都知道啦,下面我畫了一個簡單的多線程爬蟲架構圖,如下圖所示:


Java 多線程爬蟲及分布式爬蟲架構


  分布式爬蟲架構


  分布式爬蟲架構是一個大型采集程序才需要使用的架構,一般情況下使用單機多線程就可以解決業務需求,反正我是沒有分布式爬蟲項目的經驗,所以這一塊我也沒什么可以講的,但是我們作為技術人員,我們需要對技術保存熱度,雖然不用,但是了解了解也無妨,我查閱了不少資料得出了如下結論:


  分布式爬蟲架構跟我們多線程爬蟲架構在思路上來說是一樣的,我們只需要在多線程的基礎上稍加改進就可以變成一個簡單的分布式爬蟲架構。因為分布式爬蟲架構中爬蟲程序部署在不同的機器上,所以我們待采集的 URL 和 采集過的 URL 就不能存放在爬蟲程序機器的內存中啦,我們需要將它統一在某臺機器上維護啦,比如存放在 Redis 或者 MongoDB 中,每臺機器都從這上面獲取采集鏈接,而不是從 LinkedBlockingQueue 這樣的內存隊列中取鏈接啦,這樣一個簡單的分布式爬蟲架構就出現了,當然這里面還會有很多細節問題,因為我沒有分布式架構的經驗


       以上就是動力節點Java培訓機構小編介紹的“Java多線程爬蟲及分布式爬蟲架構”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


  相關內容


  java多線程的狀態轉換以及基本操作


  常見Java多線程面試題總結


  Java多線程學習,深入解析


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 九九热精品免费观看 | 欧美激情视频二区三区 | 久久精品久久久 | 操片免费看 | 欧美在线观看视频 | 羞羞色院91蜜桃在线观看 | 国产码欧美日韩高清综合一区 | 有码一区 | 日韩欧美一级毛片视频免费 | 精品一区二区久久久久久久网精 | 欧美一欧美一区二三区性 | 99久久这里只精品国产免费 | 久久精品全国免费观看国产 | 岛国精品在线 | 日韩色中色 | 一本大道香蕉中文在线高清 | 国产99精品免费视频看6 | 狠狠操图片 | 波多野结衣一区二区三区在线观看 | 国产伦理精品 | 五月激激激综合网色播免费 | 精品一区二区三区在线视频观看 | 成人最新午夜免费视频 | 香蕉一区 | 99国产高清久久久久久网站 | 麻豆精品成人免费国产片 | 天天玩天天干 | 国产成人精品一区二区不卡 | 一区二区免费在线观看 | 久久精品中文字幕一区 | 久久国产成人精品麻豆 | 日韩精品福利视频一区二区三区 | 中文字幕一区婷婷久久 | 最新欧美精品一区二区三区不卡 | 亚洲一级免费视频 | 国内精品久久久久影院嫩草 | 俺去也理论网站 | 日本不卡在线一区二区三区视频 | 国产亚洲欧美另类久久久 | 日韩精品欧美高清区 | 日本a∨在线观看 |