分布式架構
爬蟲(chóng)分布式構架有哪些益處?
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 192 次瀏覽 ? 2020-06-26 08:02
爬蟲(chóng)使用分布式構架,可以使我們實(shí)現多任務(wù)同時(shí)操作,工作效率就能快速提高。代理IP下邊要跟你們介紹的就是分布式爬蟲(chóng)分布式爬蟲(chóng)架構,讓我們瞧瞧究竟有什么魅力吧。
分布式爬蟲(chóng)還能分成幾個(gè)分布式級別,不同的應用程序才能由其中個(gè)別組成。大型分布式爬蟲(chóng)具體分成以下三個(gè)級別:分布式數據中心分布式爬蟲(chóng)架構,分布式爬網(wǎng)服務(wù)器和分布式爬蟲(chóng)。整個(gè)爬蟲(chóng)系統由遍及全世界的多個(gè)分布式數據中心組成。每個(gè)數據中心負責獲取該地域的互聯(lián)網(wǎng)頁(yè)面。舉個(gè)事例,亞洲數據中心從歐洲國家(如中國,印度和俄羅斯等)獲取頁(yè)面。爬取的頁(yè)面相對較逾,爬取效率絕對比遠程爬取快的多了。每個(gè)數據中心由多個(gè)高速網(wǎng)路聯(lián)接的爬網(wǎng)服務(wù)器組成,每個(gè)服務(wù)器能布署多個(gè)爬蟲(chóng)。根據多級分布式爬行系統,能夠保證數據獲取的時(shí)效性和廣泛性。
用代理IP分布式爬蟲(chóng)有哪些用處?
1、設置分布式服務(wù)器的成本很高。幾十臺服務(wù)器的成本是每月數十萬(wàn)元。管理服務(wù)器的日常操作還要專(zhuān)業(yè)的操作和運維人員。畢竟,小型企業(yè)大型工作室等不會(huì )象百度那樣擁有這么龐大的資本!
2、使用單個(gè)拔號服務(wù)器進(jìn)行爬網(wǎng)的效率很低,不能實(shí)現多線(xiàn)程處理。在一些地區,撥號IP也不能搜集。
3、免費代理IP的影響極其惡劣,完全不起作用。
4、當你頻繁采用相同的ip訪(fǎng)問(wèn)網(wǎng)站時(shí),ip非常容易被封禁,代理IP將完美地解決這個(gè)問(wèn)題。黑洞代理?yè)碛袛登f(wàn)個(gè)IP庫,以保障ip資源的穩定性和可用性。
如果你須要爬取大量的頁(yè)面,那么分布式結構就是你最好的選擇。 查看全部

爬蟲(chóng)使用分布式構架,可以使我們實(shí)現多任務(wù)同時(shí)操作,工作效率就能快速提高。代理IP下邊要跟你們介紹的就是分布式爬蟲(chóng)分布式爬蟲(chóng)架構,讓我們瞧瞧究竟有什么魅力吧。
分布式爬蟲(chóng)還能分成幾個(gè)分布式級別,不同的應用程序才能由其中個(gè)別組成。大型分布式爬蟲(chóng)具體分成以下三個(gè)級別:分布式數據中心分布式爬蟲(chóng)架構,分布式爬網(wǎng)服務(wù)器和分布式爬蟲(chóng)。整個(gè)爬蟲(chóng)系統由遍及全世界的多個(gè)分布式數據中心組成。每個(gè)數據中心負責獲取該地域的互聯(lián)網(wǎng)頁(yè)面。舉個(gè)事例,亞洲數據中心從歐洲國家(如中國,印度和俄羅斯等)獲取頁(yè)面。爬取的頁(yè)面相對較逾,爬取效率絕對比遠程爬取快的多了。每個(gè)數據中心由多個(gè)高速網(wǎng)路聯(lián)接的爬網(wǎng)服務(wù)器組成,每個(gè)服務(wù)器能布署多個(gè)爬蟲(chóng)。根據多級分布式爬行系統,能夠保證數據獲取的時(shí)效性和廣泛性。

用代理IP分布式爬蟲(chóng)有哪些用處?
1、設置分布式服務(wù)器的成本很高。幾十臺服務(wù)器的成本是每月數十萬(wàn)元。管理服務(wù)器的日常操作還要專(zhuān)業(yè)的操作和運維人員。畢竟,小型企業(yè)大型工作室等不會(huì )象百度那樣擁有這么龐大的資本!
2、使用單個(gè)拔號服務(wù)器進(jìn)行爬網(wǎng)的效率很低,不能實(shí)現多線(xiàn)程處理。在一些地區,撥號IP也不能搜集。
3、免費代理IP的影響極其惡劣,完全不起作用。
4、當你頻繁采用相同的ip訪(fǎng)問(wèn)網(wǎng)站時(shí),ip非常容易被封禁,代理IP將完美地解決這個(gè)問(wèn)題。黑洞代理?yè)碛袛登f(wàn)個(gè)IP庫,以保障ip資源的穩定性和可用性。
如果你須要爬取大量的頁(yè)面,那么分布式結構就是你最好的選擇。
基于Java的小型分布式網(wǎng)路爬蟲(chóng)體系結構
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 301 次瀏覽 ? 2020-05-11 08:02
分布式網(wǎng)路爬蟲(chóng)包含多個(gè)爬蟲(chóng),每個(gè)爬蟲(chóng)須要完成的任務(wù)和單個(gè)的爬行器類(lèi)似,它們從互聯(lián)網(wǎng)上下載網(wǎng)頁(yè),并把網(wǎng)頁(yè)保存在本地的c盤(pán)分布式爬蟲(chóng)架構,從中抽取URL并順著(zhù)這種URL的指向繼續爬行。由于并行爬行器須要分割下載任務(wù),可能爬蟲(chóng)會(huì )將自己抽取的URL發(fā)送給其他爬蟲(chóng)。這些爬蟲(chóng)可能分布在同一個(gè)局域網(wǎng)之中,或者分散在不同的地理位置。
根據爬蟲(chóng)的分散程度不同,可以把分布式爬行器分成以下兩大類(lèi):
1、基于局域網(wǎng)分布式網(wǎng)路爬蟲(chóng):這種分布式爬行器的所有爬蟲(chóng)在同一個(gè)局域網(wǎng)里運行,通過(guò)高速的網(wǎng)路聯(lián)接互相通訊。這些爬蟲(chóng)通過(guò)同一個(gè)網(wǎng)路去訪(fǎng)問(wèn)外部互聯(lián)網(wǎng),下載網(wǎng)頁(yè),所有的網(wǎng)路負載都集中在她們所在的那種局域網(wǎng)的出口上。由于局域網(wǎng)的帶寬較高,爬蟲(chóng)之間的通訊的效率能否得到保證;但是網(wǎng)路出口的總帶寬上限是固定的,爬蟲(chóng)的數目會(huì )遭到局域網(wǎng)出口帶寬的限制。
2、基于廣域網(wǎng)分布式網(wǎng)路爬蟲(chóng):當并行爬行器的爬蟲(chóng)分別運行在不同地理位置(或網(wǎng)路位置),我們稱(chēng)這些并行爬行器為分布式爬行器。例如,分布式爬行器的爬蟲(chóng)可能坐落中國,日本,和英國,分別負責下載這三地的網(wǎng)頁(yè);或者坐落CHINANET,CERNET,CEINET,分別負責下載這三個(gè)網(wǎng)路的中的網(wǎng)頁(yè)。分布式爬行器的優(yōu)勢在于可以子在一定程度上分散網(wǎng)路流量,減小網(wǎng)路出口的負載。如果爬蟲(chóng)分布在不同的地理位置(或網(wǎng)路位置),需要間隔多長(cháng)時(shí)間進(jìn)行一次互相通訊就成為了一個(gè)值得考慮的問(wèn)題。爬蟲(chóng)之間的通信帶寬可能是有限的,通常須要通過(guò)互聯(lián)網(wǎng)進(jìn)行通訊。
大型分布式網(wǎng)路爬蟲(chóng)體系結構圖
分布式網(wǎng)路爬蟲(chóng)是一項非常復雜系統。需要考慮好多方面誘因。性能可以說(shuō)是它這重要的指標。當然硬件層面的資源也是必須的。
架構
下面是項目的總體構架,第一個(gè)版本基于此方案來(lái)做。
上面的web層包括:控制臺、基本權限、監控展示等,還可以依據須要再一步進(jìn)行擴充。
核心層由控制者統一調度,將任務(wù)發(fā)給工人隊列中的工人進(jìn)行爬取操作。各個(gè)結點(diǎn)動(dòng)態(tài)的向監控模塊發(fā)送模塊狀態(tài)等信息,統一由展示層展示。
項目目標
眾推,開(kāi)源版的明日頭條!
基于hadoop思維的分布式網(wǎng)路爬蟲(chóng)。
目前早已將fourinone、jeesite、webmagic整合進(jìn)來(lái),并且進(jìn)一步進(jìn)行改進(jìn)。想最終弄成一個(gè)基于設計器的動(dòng)態(tài)可配置的分布式爬蟲(chóng)系統,這個(gè)是第一階段的目標。
項目目前情況
目前項目進(jìn)展情況:
1、sourceer,可以接入多種數據源,接口早已定義(加入builder封裝,可以使用簡(jiǎn)單爬蟲(chóng))。
2、web構架工程(web工程上傳并測試成功,權限、基礎框架改建,導入等早已錄成視頻,刪除activiti,刪除cms部分)。
3、分布式框架研究(分布式項目發(fā)包,添加部份注釋?zhuān)瑴y試單機單工人爬取)。
4、插件化整合。
5、文章等各類(lèi)去重形式及算法(目前已實(shí)現bloomfilter分布式爬蟲(chóng)架構,指紋算法去重,已經(jīng)實(shí)現simhash,分詞算法(ansj))。
6、分類(lèi)器測試(bayes,文本分類(lèi)單機測試成功)。
項目地址:
(分布式爬蟲(chóng))
(去重過(guò)濾器)
(文本分類(lèi)器)
(文檔目錄)
項目界面:
啟動(dòng)jetty,目前皮膚暫時(shí)還未換。
總結
目前項目正在進(jìn)一步建立當中,希望能得到你更多的意見(jiàn)! 查看全部
【IT168技術(shù)】分類(lèi)
分布式網(wǎng)路爬蟲(chóng)包含多個(gè)爬蟲(chóng),每個(gè)爬蟲(chóng)須要完成的任務(wù)和單個(gè)的爬行器類(lèi)似,它們從互聯(lián)網(wǎng)上下載網(wǎng)頁(yè),并把網(wǎng)頁(yè)保存在本地的c盤(pán)分布式爬蟲(chóng)架構,從中抽取URL并順著(zhù)這種URL的指向繼續爬行。由于并行爬行器須要分割下載任務(wù),可能爬蟲(chóng)會(huì )將自己抽取的URL發(fā)送給其他爬蟲(chóng)。這些爬蟲(chóng)可能分布在同一個(gè)局域網(wǎng)之中,或者分散在不同的地理位置。
根據爬蟲(chóng)的分散程度不同,可以把分布式爬行器分成以下兩大類(lèi):
1、基于局域網(wǎng)分布式網(wǎng)路爬蟲(chóng):這種分布式爬行器的所有爬蟲(chóng)在同一個(gè)局域網(wǎng)里運行,通過(guò)高速的網(wǎng)路聯(lián)接互相通訊。這些爬蟲(chóng)通過(guò)同一個(gè)網(wǎng)路去訪(fǎng)問(wèn)外部互聯(lián)網(wǎng),下載網(wǎng)頁(yè),所有的網(wǎng)路負載都集中在她們所在的那種局域網(wǎng)的出口上。由于局域網(wǎng)的帶寬較高,爬蟲(chóng)之間的通訊的效率能否得到保證;但是網(wǎng)路出口的總帶寬上限是固定的,爬蟲(chóng)的數目會(huì )遭到局域網(wǎng)出口帶寬的限制。
2、基于廣域網(wǎng)分布式網(wǎng)路爬蟲(chóng):當并行爬行器的爬蟲(chóng)分別運行在不同地理位置(或網(wǎng)路位置),我們稱(chēng)這些并行爬行器為分布式爬行器。例如,分布式爬行器的爬蟲(chóng)可能坐落中國,日本,和英國,分別負責下載這三地的網(wǎng)頁(yè);或者坐落CHINANET,CERNET,CEINET,分別負責下載這三個(gè)網(wǎng)路的中的網(wǎng)頁(yè)。分布式爬行器的優(yōu)勢在于可以子在一定程度上分散網(wǎng)路流量,減小網(wǎng)路出口的負載。如果爬蟲(chóng)分布在不同的地理位置(或網(wǎng)路位置),需要間隔多長(cháng)時(shí)間進(jìn)行一次互相通訊就成為了一個(gè)值得考慮的問(wèn)題。爬蟲(chóng)之間的通信帶寬可能是有限的,通常須要通過(guò)互聯(lián)網(wǎng)進(jìn)行通訊。
大型分布式網(wǎng)路爬蟲(chóng)體系結構圖

分布式網(wǎng)路爬蟲(chóng)是一項非常復雜系統。需要考慮好多方面誘因。性能可以說(shuō)是它這重要的指標。當然硬件層面的資源也是必須的。
架構
下面是項目的總體構架,第一個(gè)版本基于此方案來(lái)做。
上面的web層包括:控制臺、基本權限、監控展示等,還可以依據須要再一步進(jìn)行擴充。
核心層由控制者統一調度,將任務(wù)發(fā)給工人隊列中的工人進(jìn)行爬取操作。各個(gè)結點(diǎn)動(dòng)態(tài)的向監控模塊發(fā)送模塊狀態(tài)等信息,統一由展示層展示。

項目目標
眾推,開(kāi)源版的明日頭條!
基于hadoop思維的分布式網(wǎng)路爬蟲(chóng)。
目前早已將fourinone、jeesite、webmagic整合進(jìn)來(lái),并且進(jìn)一步進(jìn)行改進(jìn)。想最終弄成一個(gè)基于設計器的動(dòng)態(tài)可配置的分布式爬蟲(chóng)系統,這個(gè)是第一階段的目標。
項目目前情況
目前項目進(jìn)展情況:
1、sourceer,可以接入多種數據源,接口早已定義(加入builder封裝,可以使用簡(jiǎn)單爬蟲(chóng))。
2、web構架工程(web工程上傳并測試成功,權限、基礎框架改建,導入等早已錄成視頻,刪除activiti,刪除cms部分)。
3、分布式框架研究(分布式項目發(fā)包,添加部份注釋?zhuān)瑴y試單機單工人爬取)。
4、插件化整合。
5、文章等各類(lèi)去重形式及算法(目前已實(shí)現bloomfilter分布式爬蟲(chóng)架構,指紋算法去重,已經(jīng)實(shí)現simhash,分詞算法(ansj))。
6、分類(lèi)器測試(bayes,文本分類(lèi)單機測試成功)。
項目地址:
(分布式爬蟲(chóng))
(去重過(guò)濾器)
(文本分類(lèi)器)
(文檔目錄)
項目界面:
啟動(dòng)jetty,目前皮膚暫時(shí)還未換。

總結
目前項目正在進(jìn)一步建立當中,希望能得到你更多的意見(jiàn)!
分布式爬蟲(chóng)構架
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 288 次瀏覽 ? 2020-05-07 08:02
設計爬蟲(chóng)構架 爬蟲(chóng)構架滿(mǎn)足一下功能 (1) 分布式:爬蟲(chóng)應當才能在多臺機器上分布執行。 (2) 可伸縮性:爬蟲(chóng)結構應當才能通過(guò)降低額外的機器和帶寬來(lái)提升抓取速率。 (3) 性能和有效性:爬蟲(chóng)系統必須有效地使用各類(lèi)系統資源,例如,處理器、存儲空間和網(wǎng) 絡(luò )帶寬。 (4) 可擴展性:為了才能支持新的數據格式和新的抓取合同,爬蟲(chóng)構架應當設計成模塊化的 形式。 這里最主要的是爬蟲(chóng)和儲存庫。 其中的爬蟲(chóng)部份階段性地抓取互聯(lián)網(wǎng)上的內容。 存儲庫儲存 爬蟲(chóng)下載出來(lái)的網(wǎng)頁(yè), 是分布式的和可擴充的儲存系統。 在往儲存庫中加載新的內容時(shí)依然 可以讀取儲存庫。整個(gè)爬蟲(chóng)系統可以由一臺抓取機器或多個(gè)爬蟲(chóng)節點(diǎn)組成。 加載復雜的網(wǎng)頁(yè)可以選擇采用 WebKit 模擬瀏覽器處理 js 渲染頁(yè)面獲取 多機并行抓取的分布式系統節點(diǎn)之間的通訊和調度,在一個(gè)爬蟲(chóng)節點(diǎn)上實(shí)現并行抓取分布式爬蟲(chóng)架構,可以 考慮多線(xiàn)程同步 I/O 或者單線(xiàn)程異步 I/O。多線(xiàn)程爬蟲(chóng)須要考慮線(xiàn)程之間的同步問(wèn)題。對單 線(xiàn)程并行抓取來(lái)說(shuō)分布式爬蟲(chóng)架構,異步 I/O 是很重要的基本功能。解析流程 (1)通過(guò)基于正則,Xpath.Csspath 等規則,獲取頁(yè)面指定位置的 html 或文本數據 (2)按照數據格式需求,判斷必要值是否存在,并依據類(lèi)型判別數據正確 (3)通過(guò)驗證的數據步入到數據入隊的緩存隊列等待存入數據庫房 (4)如果數據驗證不通過(guò),則將異常的 url 返回到待抓取 URL 集合中重新抓取關(guān)鍵節點(diǎn)數據說(shuō)明 (1)Web 配置界面:可在界面降低爬取的種子入口,入庫規則,URL 過(guò)濾規則 (2)控制節點(diǎn):負責將 URl 集合中的待爬地址分發(fā)到多個(gè)工作節點(diǎn)便于并發(fā)的執行爬取工作 (3)工作節點(diǎn):根據待爬的 URL 信息和對應的種子規則獲取頁(yè)面并解析出數據,并按照抓取的頁(yè) 面獲取相關(guān)聯(lián)的須要爬取的 URL 信息,加入到 URL 集合中等待爬取. (4)解析頁(yè)面:根據種子提供的解析規則抽取,并驗證數據的入庫合法性,通過(guò)則存入入庫緩沖 隊列中,如果發(fā)覺(jué)有異常,則返回當前 URL 到 URL 集合中重新爬取 URL 集合 Url 集合中的數據項,除了抓取的 url 本身外,額外帶有流程中各環(huán)節處理結果的數據信息,如: 解析異常,會(huì )降低 url 項中的解析異常次數,以便在前面的邏輯中控制重試次數(還有更新次數, 最近成功更新時(shí)間....) 節點(diǎn)配置 根 據 系 統 的 規 模 和 數 據 抓 取 量 的 大 小 , 在 數 據 存 儲 DB 這 塊 , 可 以 根 據 實(shí) 際 情 況 采 用 mongo,hbase 或其它的數據庫,以達到系統儲存的可伸縮性URL 扭轉的消息隊列也可以依據系統規模,如 1 億條數據緩存采用 ssdb,如果須要性能更好可 以采用 kafka 分布式的消息隊列,以便可以便捷的擴充系統運行規模. 爬蟲(chóng)平臺監控須要實(shí)現功能 (1)爬蟲(chóng)運行狀態(tài)監控 a) 爬蟲(chóng)定時(shí)發(fā)送心跳包,監控平臺依照心跳包,監控爬蟲(chóng)的運行狀態(tài) (2)爬蟲(chóng)采集量監控 a) 對爬蟲(chóng)爬取數據的總數的統計 (3)爬蟲(chóng)采集速度監控 /秒 /分 /時(shí) 根據規模需求而定 a) /秒 /分 /時(shí) 根據規模需求而定 (4)定時(shí)電郵發(fā)送運行狀態(tài)和統計信息 a) 定時(shí)發(fā)送,爬蟲(chóng)運行的情況和爬取數據總數
【Golang實(shí)現網(wǎng)路爬蟲(chóng)】分布式爬蟲(chóng)系統構架
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 353 次瀏覽 ? 2020-05-03 08:01
分布式系統是一個(gè)硬件或軟件組件分布在不同的網(wǎng)路計算機上,彼此之間僅僅通過(guò)消息傳遞進(jìn)行通訊和協(xié)調的系統。簡(jiǎn)單來(lái)說(shuō)就是一群獨立計算機集合共同對外提供服務(wù),但是對于系統的用戶(hù)來(lái)說(shuō),就像是一臺計算機在提供服務(wù)一樣。分布式意味著(zhù)可以采用更多的普通計算機(相對于高昂的大型機)組成分布式集群對外提供服務(wù)。計算機越多,CPU、內存、存儲資源等也就越多,能夠處理的并發(fā)訪(fǎng)問(wèn)量也就越大。
從分布式系統的概念中我們曉得,各個(gè)主機之間通訊和協(xié)調主要通過(guò)網(wǎng)路進(jìn)行,所以分布式系統中的計算機在空間上幾乎沒(méi)有任何限制,這些計算機可能被置于不同的機柜上,也可能被布署在不同的機房中,還可能在不同的城市中,對于小型的網(wǎng)站甚至可能分布在不同的國家和地區。
不同的資料介紹起分布式系統的特性,雖然說(shuō)法不同,但都大同小異,此處我們針對于要實(shí)現的分布式爬蟲(chóng),總結為以下3個(gè)特征:
消息傳遞完成特定需求
消息傳遞的方式:
分布式系統的結構圖:
一般對外會(huì )使用REST,模塊內部會(huì )使用RPC,效率會(huì )更高一些,模塊之前:中間件、REST
針對于目前我們遇見(jiàn)的問(wèn)題,我們給予解決方案分布式爬蟲(chóng)架構,來(lái)設計分布式爬蟲(chóng)項目的構架:
1.限流問(wèn)題
問(wèn)題:
單節點(diǎn)承受的流量是有限
解決:
將Worker放在不同的節點(diǎn)
2.去重問(wèn)題
問(wèn)題:
單節點(diǎn)承受的去重數據量有限
無(wú)法保存之前去重結果(因為是存入到顯存(map))
解決:
基于Key-Value Stroe(如Redis)進(jìn)行分布式去重
3.數據儲存問(wèn)題
問(wèn)題:
存儲部份的結構,技術(shù)棧和爬蟲(chóng)部份區別很大
進(jìn)一步優(yōu)化須要特殊的ElasticSearch技術(shù)背景
解決:
存儲服務(wù)
所以最終我們的分布式爬蟲(chóng)構架如下:
還有一個(gè)關(guān)鍵點(diǎn):從Channel進(jìn)化到分布式
之前我們?yōu)榱藢?shí)現并發(fā),使用了大量的goroutine以及Channel。那我們就可以開(kāi)啟一個(gè)遠程的RPC服務(wù)分布式爬蟲(chóng)架構,然后進(jìn)行同步的調用。
RPC有很多種做法,本文采用jsonrpc。
源代碼 查看全部

分布式系統是一個(gè)硬件或軟件組件分布在不同的網(wǎng)路計算機上,彼此之間僅僅通過(guò)消息傳遞進(jìn)行通訊和協(xié)調的系統。簡(jiǎn)單來(lái)說(shuō)就是一群獨立計算機集合共同對外提供服務(wù),但是對于系統的用戶(hù)來(lái)說(shuō),就像是一臺計算機在提供服務(wù)一樣。分布式意味著(zhù)可以采用更多的普通計算機(相對于高昂的大型機)組成分布式集群對外提供服務(wù)。計算機越多,CPU、內存、存儲資源等也就越多,能夠處理的并發(fā)訪(fǎng)問(wèn)量也就越大。
從分布式系統的概念中我們曉得,各個(gè)主機之間通訊和協(xié)調主要通過(guò)網(wǎng)路進(jìn)行,所以分布式系統中的計算機在空間上幾乎沒(méi)有任何限制,這些計算機可能被置于不同的機柜上,也可能被布署在不同的機房中,還可能在不同的城市中,對于小型的網(wǎng)站甚至可能分布在不同的國家和地區。
不同的資料介紹起分布式系統的特性,雖然說(shuō)法不同,但都大同小異,此處我們針對于要實(shí)現的分布式爬蟲(chóng),總結為以下3個(gè)特征:
消息傳遞完成特定需求
消息傳遞的方式:
分布式系統的結構圖:

一般對外會(huì )使用REST,模塊內部會(huì )使用RPC,效率會(huì )更高一些,模塊之前:中間件、REST
針對于目前我們遇見(jiàn)的問(wèn)題,我們給予解決方案分布式爬蟲(chóng)架構,來(lái)設計分布式爬蟲(chóng)項目的構架:
1.限流問(wèn)題
問(wèn)題:
單節點(diǎn)承受的流量是有限
解決:
將Worker放在不同的節點(diǎn)

2.去重問(wèn)題
問(wèn)題:
單節點(diǎn)承受的去重數據量有限
無(wú)法保存之前去重結果(因為是存入到顯存(map))
解決:
基于Key-Value Stroe(如Redis)進(jìn)行分布式去重


3.數據儲存問(wèn)題
問(wèn)題:
存儲部份的結構,技術(shù)棧和爬蟲(chóng)部份區別很大
進(jìn)一步優(yōu)化須要特殊的ElasticSearch技術(shù)背景
解決:
存儲服務(wù)

所以最終我們的分布式爬蟲(chóng)構架如下:

還有一個(gè)關(guān)鍵點(diǎn):從Channel進(jìn)化到分布式
之前我們?yōu)榱藢?shí)現并發(fā),使用了大量的goroutine以及Channel。那我們就可以開(kāi)啟一個(gè)遠程的RPC服務(wù)分布式爬蟲(chóng)架構,然后進(jìn)行同步的調用。

RPC有很多種做法,本文采用jsonrpc。
源代碼
爬蟲(chóng)分布式構架有哪些益處?
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 192 次瀏覽 ? 2020-06-26 08:02
爬蟲(chóng)使用分布式構架,可以使我們實(shí)現多任務(wù)同時(shí)操作,工作效率就能快速提高。代理IP下邊要跟你們介紹的就是分布式爬蟲(chóng)分布式爬蟲(chóng)架構,讓我們瞧瞧究竟有什么魅力吧。
分布式爬蟲(chóng)還能分成幾個(gè)分布式級別,不同的應用程序才能由其中個(gè)別組成。大型分布式爬蟲(chóng)具體分成以下三個(gè)級別:分布式數據中心分布式爬蟲(chóng)架構,分布式爬網(wǎng)服務(wù)器和分布式爬蟲(chóng)。整個(gè)爬蟲(chóng)系統由遍及全世界的多個(gè)分布式數據中心組成。每個(gè)數據中心負責獲取該地域的互聯(lián)網(wǎng)頁(yè)面。舉個(gè)事例,亞洲數據中心從歐洲國家(如中國,印度和俄羅斯等)獲取頁(yè)面。爬取的頁(yè)面相對較逾,爬取效率絕對比遠程爬取快的多了。每個(gè)數據中心由多個(gè)高速網(wǎng)路聯(lián)接的爬網(wǎng)服務(wù)器組成,每個(gè)服務(wù)器能布署多個(gè)爬蟲(chóng)。根據多級分布式爬行系統,能夠保證數據獲取的時(shí)效性和廣泛性。
用代理IP分布式爬蟲(chóng)有哪些用處?
1、設置分布式服務(wù)器的成本很高。幾十臺服務(wù)器的成本是每月數十萬(wàn)元。管理服務(wù)器的日常操作還要專(zhuān)業(yè)的操作和運維人員。畢竟,小型企業(yè)大型工作室等不會(huì )象百度那樣擁有這么龐大的資本!
2、使用單個(gè)拔號服務(wù)器進(jìn)行爬網(wǎng)的效率很低,不能實(shí)現多線(xiàn)程處理。在一些地區,撥號IP也不能搜集。
3、免費代理IP的影響極其惡劣,完全不起作用。
4、當你頻繁采用相同的ip訪(fǎng)問(wèn)網(wǎng)站時(shí),ip非常容易被封禁,代理IP將完美地解決這個(gè)問(wèn)題。黑洞代理?yè)碛袛登f(wàn)個(gè)IP庫,以保障ip資源的穩定性和可用性。
如果你須要爬取大量的頁(yè)面,那么分布式結構就是你最好的選擇。 查看全部

爬蟲(chóng)使用分布式構架,可以使我們實(shí)現多任務(wù)同時(shí)操作,工作效率就能快速提高。代理IP下邊要跟你們介紹的就是分布式爬蟲(chóng)分布式爬蟲(chóng)架構,讓我們瞧瞧究竟有什么魅力吧。
分布式爬蟲(chóng)還能分成幾個(gè)分布式級別,不同的應用程序才能由其中個(gè)別組成。大型分布式爬蟲(chóng)具體分成以下三個(gè)級別:分布式數據中心分布式爬蟲(chóng)架構,分布式爬網(wǎng)服務(wù)器和分布式爬蟲(chóng)。整個(gè)爬蟲(chóng)系統由遍及全世界的多個(gè)分布式數據中心組成。每個(gè)數據中心負責獲取該地域的互聯(lián)網(wǎng)頁(yè)面。舉個(gè)事例,亞洲數據中心從歐洲國家(如中國,印度和俄羅斯等)獲取頁(yè)面。爬取的頁(yè)面相對較逾,爬取效率絕對比遠程爬取快的多了。每個(gè)數據中心由多個(gè)高速網(wǎng)路聯(lián)接的爬網(wǎng)服務(wù)器組成,每個(gè)服務(wù)器能布署多個(gè)爬蟲(chóng)。根據多級分布式爬行系統,能夠保證數據獲取的時(shí)效性和廣泛性。

用代理IP分布式爬蟲(chóng)有哪些用處?
1、設置分布式服務(wù)器的成本很高。幾十臺服務(wù)器的成本是每月數十萬(wàn)元。管理服務(wù)器的日常操作還要專(zhuān)業(yè)的操作和運維人員。畢竟,小型企業(yè)大型工作室等不會(huì )象百度那樣擁有這么龐大的資本!
2、使用單個(gè)拔號服務(wù)器進(jìn)行爬網(wǎng)的效率很低,不能實(shí)現多線(xiàn)程處理。在一些地區,撥號IP也不能搜集。
3、免費代理IP的影響極其惡劣,完全不起作用。
4、當你頻繁采用相同的ip訪(fǎng)問(wèn)網(wǎng)站時(shí),ip非常容易被封禁,代理IP將完美地解決這個(gè)問(wèn)題。黑洞代理?yè)碛袛登f(wàn)個(gè)IP庫,以保障ip資源的穩定性和可用性。
如果你須要爬取大量的頁(yè)面,那么分布式結構就是你最好的選擇。
基于Java的小型分布式網(wǎng)路爬蟲(chóng)體系結構
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 301 次瀏覽 ? 2020-05-11 08:02
分布式網(wǎng)路爬蟲(chóng)包含多個(gè)爬蟲(chóng),每個(gè)爬蟲(chóng)須要完成的任務(wù)和單個(gè)的爬行器類(lèi)似,它們從互聯(lián)網(wǎng)上下載網(wǎng)頁(yè),并把網(wǎng)頁(yè)保存在本地的c盤(pán)分布式爬蟲(chóng)架構,從中抽取URL并順著(zhù)這種URL的指向繼續爬行。由于并行爬行器須要分割下載任務(wù),可能爬蟲(chóng)會(huì )將自己抽取的URL發(fā)送給其他爬蟲(chóng)。這些爬蟲(chóng)可能分布在同一個(gè)局域網(wǎng)之中,或者分散在不同的地理位置。
根據爬蟲(chóng)的分散程度不同,可以把分布式爬行器分成以下兩大類(lèi):
1、基于局域網(wǎng)分布式網(wǎng)路爬蟲(chóng):這種分布式爬行器的所有爬蟲(chóng)在同一個(gè)局域網(wǎng)里運行,通過(guò)高速的網(wǎng)路聯(lián)接互相通訊。這些爬蟲(chóng)通過(guò)同一個(gè)網(wǎng)路去訪(fǎng)問(wèn)外部互聯(lián)網(wǎng),下載網(wǎng)頁(yè),所有的網(wǎng)路負載都集中在她們所在的那種局域網(wǎng)的出口上。由于局域網(wǎng)的帶寬較高,爬蟲(chóng)之間的通訊的效率能否得到保證;但是網(wǎng)路出口的總帶寬上限是固定的,爬蟲(chóng)的數目會(huì )遭到局域網(wǎng)出口帶寬的限制。
2、基于廣域網(wǎng)分布式網(wǎng)路爬蟲(chóng):當并行爬行器的爬蟲(chóng)分別運行在不同地理位置(或網(wǎng)路位置),我們稱(chēng)這些并行爬行器為分布式爬行器。例如,分布式爬行器的爬蟲(chóng)可能坐落中國,日本,和英國,分別負責下載這三地的網(wǎng)頁(yè);或者坐落CHINANET,CERNET,CEINET,分別負責下載這三個(gè)網(wǎng)路的中的網(wǎng)頁(yè)。分布式爬行器的優(yōu)勢在于可以子在一定程度上分散網(wǎng)路流量,減小網(wǎng)路出口的負載。如果爬蟲(chóng)分布在不同的地理位置(或網(wǎng)路位置),需要間隔多長(cháng)時(shí)間進(jìn)行一次互相通訊就成為了一個(gè)值得考慮的問(wèn)題。爬蟲(chóng)之間的通信帶寬可能是有限的,通常須要通過(guò)互聯(lián)網(wǎng)進(jìn)行通訊。
大型分布式網(wǎng)路爬蟲(chóng)體系結構圖
分布式網(wǎng)路爬蟲(chóng)是一項非常復雜系統。需要考慮好多方面誘因。性能可以說(shuō)是它這重要的指標。當然硬件層面的資源也是必須的。
架構
下面是項目的總體構架,第一個(gè)版本基于此方案來(lái)做。
上面的web層包括:控制臺、基本權限、監控展示等,還可以依據須要再一步進(jìn)行擴充。
核心層由控制者統一調度,將任務(wù)發(fā)給工人隊列中的工人進(jìn)行爬取操作。各個(gè)結點(diǎn)動(dòng)態(tài)的向監控模塊發(fā)送模塊狀態(tài)等信息,統一由展示層展示。
項目目標
眾推,開(kāi)源版的明日頭條!
基于hadoop思維的分布式網(wǎng)路爬蟲(chóng)。
目前早已將fourinone、jeesite、webmagic整合進(jìn)來(lái),并且進(jìn)一步進(jìn)行改進(jìn)。想最終弄成一個(gè)基于設計器的動(dòng)態(tài)可配置的分布式爬蟲(chóng)系統,這個(gè)是第一階段的目標。
項目目前情況
目前項目進(jìn)展情況:
1、sourceer,可以接入多種數據源,接口早已定義(加入builder封裝,可以使用簡(jiǎn)單爬蟲(chóng))。
2、web構架工程(web工程上傳并測試成功,權限、基礎框架改建,導入等早已錄成視頻,刪除activiti,刪除cms部分)。
3、分布式框架研究(分布式項目發(fā)包,添加部份注釋?zhuān)瑴y試單機單工人爬取)。
4、插件化整合。
5、文章等各類(lèi)去重形式及算法(目前已實(shí)現bloomfilter分布式爬蟲(chóng)架構,指紋算法去重,已經(jīng)實(shí)現simhash,分詞算法(ansj))。
6、分類(lèi)器測試(bayes,文本分類(lèi)單機測試成功)。
項目地址:
(分布式爬蟲(chóng))
(去重過(guò)濾器)
(文本分類(lèi)器)
(文檔目錄)
項目界面:
啟動(dòng)jetty,目前皮膚暫時(shí)還未換。
總結
目前項目正在進(jìn)一步建立當中,希望能得到你更多的意見(jiàn)! 查看全部
【IT168技術(shù)】分類(lèi)
分布式網(wǎng)路爬蟲(chóng)包含多個(gè)爬蟲(chóng),每個(gè)爬蟲(chóng)須要完成的任務(wù)和單個(gè)的爬行器類(lèi)似,它們從互聯(lián)網(wǎng)上下載網(wǎng)頁(yè),并把網(wǎng)頁(yè)保存在本地的c盤(pán)分布式爬蟲(chóng)架構,從中抽取URL并順著(zhù)這種URL的指向繼續爬行。由于并行爬行器須要分割下載任務(wù),可能爬蟲(chóng)會(huì )將自己抽取的URL發(fā)送給其他爬蟲(chóng)。這些爬蟲(chóng)可能分布在同一個(gè)局域網(wǎng)之中,或者分散在不同的地理位置。
根據爬蟲(chóng)的分散程度不同,可以把分布式爬行器分成以下兩大類(lèi):
1、基于局域網(wǎng)分布式網(wǎng)路爬蟲(chóng):這種分布式爬行器的所有爬蟲(chóng)在同一個(gè)局域網(wǎng)里運行,通過(guò)高速的網(wǎng)路聯(lián)接互相通訊。這些爬蟲(chóng)通過(guò)同一個(gè)網(wǎng)路去訪(fǎng)問(wèn)外部互聯(lián)網(wǎng),下載網(wǎng)頁(yè),所有的網(wǎng)路負載都集中在她們所在的那種局域網(wǎng)的出口上。由于局域網(wǎng)的帶寬較高,爬蟲(chóng)之間的通訊的效率能否得到保證;但是網(wǎng)路出口的總帶寬上限是固定的,爬蟲(chóng)的數目會(huì )遭到局域網(wǎng)出口帶寬的限制。
2、基于廣域網(wǎng)分布式網(wǎng)路爬蟲(chóng):當并行爬行器的爬蟲(chóng)分別運行在不同地理位置(或網(wǎng)路位置),我們稱(chēng)這些并行爬行器為分布式爬行器。例如,分布式爬行器的爬蟲(chóng)可能坐落中國,日本,和英國,分別負責下載這三地的網(wǎng)頁(yè);或者坐落CHINANET,CERNET,CEINET,分別負責下載這三個(gè)網(wǎng)路的中的網(wǎng)頁(yè)。分布式爬行器的優(yōu)勢在于可以子在一定程度上分散網(wǎng)路流量,減小網(wǎng)路出口的負載。如果爬蟲(chóng)分布在不同的地理位置(或網(wǎng)路位置),需要間隔多長(cháng)時(shí)間進(jìn)行一次互相通訊就成為了一個(gè)值得考慮的問(wèn)題。爬蟲(chóng)之間的通信帶寬可能是有限的,通常須要通過(guò)互聯(lián)網(wǎng)進(jìn)行通訊。
大型分布式網(wǎng)路爬蟲(chóng)體系結構圖

分布式網(wǎng)路爬蟲(chóng)是一項非常復雜系統。需要考慮好多方面誘因。性能可以說(shuō)是它這重要的指標。當然硬件層面的資源也是必須的。
架構
下面是項目的總體構架,第一個(gè)版本基于此方案來(lái)做。
上面的web層包括:控制臺、基本權限、監控展示等,還可以依據須要再一步進(jìn)行擴充。
核心層由控制者統一調度,將任務(wù)發(fā)給工人隊列中的工人進(jìn)行爬取操作。各個(gè)結點(diǎn)動(dòng)態(tài)的向監控模塊發(fā)送模塊狀態(tài)等信息,統一由展示層展示。

項目目標
眾推,開(kāi)源版的明日頭條!
基于hadoop思維的分布式網(wǎng)路爬蟲(chóng)。
目前早已將fourinone、jeesite、webmagic整合進(jìn)來(lái),并且進(jìn)一步進(jìn)行改進(jìn)。想最終弄成一個(gè)基于設計器的動(dòng)態(tài)可配置的分布式爬蟲(chóng)系統,這個(gè)是第一階段的目標。
項目目前情況
目前項目進(jìn)展情況:
1、sourceer,可以接入多種數據源,接口早已定義(加入builder封裝,可以使用簡(jiǎn)單爬蟲(chóng))。
2、web構架工程(web工程上傳并測試成功,權限、基礎框架改建,導入等早已錄成視頻,刪除activiti,刪除cms部分)。
3、分布式框架研究(分布式項目發(fā)包,添加部份注釋?zhuān)瑴y試單機單工人爬取)。
4、插件化整合。
5、文章等各類(lèi)去重形式及算法(目前已實(shí)現bloomfilter分布式爬蟲(chóng)架構,指紋算法去重,已經(jīng)實(shí)現simhash,分詞算法(ansj))。
6、分類(lèi)器測試(bayes,文本分類(lèi)單機測試成功)。
項目地址:
(分布式爬蟲(chóng))
(去重過(guò)濾器)
(文本分類(lèi)器)
(文檔目錄)
項目界面:
啟動(dòng)jetty,目前皮膚暫時(shí)還未換。

總結
目前項目正在進(jìn)一步建立當中,希望能得到你更多的意見(jiàn)!
分布式爬蟲(chóng)構架
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 288 次瀏覽 ? 2020-05-07 08:02
設計爬蟲(chóng)構架 爬蟲(chóng)構架滿(mǎn)足一下功能 (1) 分布式:爬蟲(chóng)應當才能在多臺機器上分布執行。 (2) 可伸縮性:爬蟲(chóng)結構應當才能通過(guò)降低額外的機器和帶寬來(lái)提升抓取速率。 (3) 性能和有效性:爬蟲(chóng)系統必須有效地使用各類(lèi)系統資源,例如,處理器、存儲空間和網(wǎng) 絡(luò )帶寬。 (4) 可擴展性:為了才能支持新的數據格式和新的抓取合同,爬蟲(chóng)構架應當設計成模塊化的 形式。 這里最主要的是爬蟲(chóng)和儲存庫。 其中的爬蟲(chóng)部份階段性地抓取互聯(lián)網(wǎng)上的內容。 存儲庫儲存 爬蟲(chóng)下載出來(lái)的網(wǎng)頁(yè), 是分布式的和可擴充的儲存系統。 在往儲存庫中加載新的內容時(shí)依然 可以讀取儲存庫。整個(gè)爬蟲(chóng)系統可以由一臺抓取機器或多個(gè)爬蟲(chóng)節點(diǎn)組成。 加載復雜的網(wǎng)頁(yè)可以選擇采用 WebKit 模擬瀏覽器處理 js 渲染頁(yè)面獲取 多機并行抓取的分布式系統節點(diǎn)之間的通訊和調度,在一個(gè)爬蟲(chóng)節點(diǎn)上實(shí)現并行抓取分布式爬蟲(chóng)架構,可以 考慮多線(xiàn)程同步 I/O 或者單線(xiàn)程異步 I/O。多線(xiàn)程爬蟲(chóng)須要考慮線(xiàn)程之間的同步問(wèn)題。對單 線(xiàn)程并行抓取來(lái)說(shuō)分布式爬蟲(chóng)架構,異步 I/O 是很重要的基本功能。解析流程 (1)通過(guò)基于正則,Xpath.Csspath 等規則,獲取頁(yè)面指定位置的 html 或文本數據 (2)按照數據格式需求,判斷必要值是否存在,并依據類(lèi)型判別數據正確 (3)通過(guò)驗證的數據步入到數據入隊的緩存隊列等待存入數據庫房 (4)如果數據驗證不通過(guò),則將異常的 url 返回到待抓取 URL 集合中重新抓取關(guān)鍵節點(diǎn)數據說(shuō)明 (1)Web 配置界面:可在界面降低爬取的種子入口,入庫規則,URL 過(guò)濾規則 (2)控制節點(diǎn):負責將 URl 集合中的待爬地址分發(fā)到多個(gè)工作節點(diǎn)便于并發(fā)的執行爬取工作 (3)工作節點(diǎn):根據待爬的 URL 信息和對應的種子規則獲取頁(yè)面并解析出數據,并按照抓取的頁(yè) 面獲取相關(guān)聯(lián)的須要爬取的 URL 信息,加入到 URL 集合中等待爬取. (4)解析頁(yè)面:根據種子提供的解析規則抽取,并驗證數據的入庫合法性,通過(guò)則存入入庫緩沖 隊列中,如果發(fā)覺(jué)有異常,則返回當前 URL 到 URL 集合中重新爬取 URL 集合 Url 集合中的數據項,除了抓取的 url 本身外,額外帶有流程中各環(huán)節處理結果的數據信息,如: 解析異常,會(huì )降低 url 項中的解析異常次數,以便在前面的邏輯中控制重試次數(還有更新次數, 最近成功更新時(shí)間....) 節點(diǎn)配置 根 據 系 統 的 規 模 和 數 據 抓 取 量 的 大 小 , 在 數 據 存 儲 DB 這 塊 , 可 以 根 據 實(shí) 際 情 況 采 用 mongo,hbase 或其它的數據庫,以達到系統儲存的可伸縮性URL 扭轉的消息隊列也可以依據系統規模,如 1 億條數據緩存采用 ssdb,如果須要性能更好可 以采用 kafka 分布式的消息隊列,以便可以便捷的擴充系統運行規模. 爬蟲(chóng)平臺監控須要實(shí)現功能 (1)爬蟲(chóng)運行狀態(tài)監控 a) 爬蟲(chóng)定時(shí)發(fā)送心跳包,監控平臺依照心跳包,監控爬蟲(chóng)的運行狀態(tài) (2)爬蟲(chóng)采集量監控 a) 對爬蟲(chóng)爬取數據的總數的統計 (3)爬蟲(chóng)采集速度監控 /秒 /分 /時(shí) 根據規模需求而定 a) /秒 /分 /時(shí) 根據規模需求而定 (4)定時(shí)電郵發(fā)送運行狀態(tài)和統計信息 a) 定時(shí)發(fā)送,爬蟲(chóng)運行的情況和爬取數據總數
【Golang實(shí)現網(wǎng)路爬蟲(chóng)】分布式爬蟲(chóng)系統構架
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 353 次瀏覽 ? 2020-05-03 08:01
分布式系統是一個(gè)硬件或軟件組件分布在不同的網(wǎng)路計算機上,彼此之間僅僅通過(guò)消息傳遞進(jìn)行通訊和協(xié)調的系統。簡(jiǎn)單來(lái)說(shuō)就是一群獨立計算機集合共同對外提供服務(wù),但是對于系統的用戶(hù)來(lái)說(shuō),就像是一臺計算機在提供服務(wù)一樣。分布式意味著(zhù)可以采用更多的普通計算機(相對于高昂的大型機)組成分布式集群對外提供服務(wù)。計算機越多,CPU、內存、存儲資源等也就越多,能夠處理的并發(fā)訪(fǎng)問(wèn)量也就越大。
從分布式系統的概念中我們曉得,各個(gè)主機之間通訊和協(xié)調主要通過(guò)網(wǎng)路進(jìn)行,所以分布式系統中的計算機在空間上幾乎沒(méi)有任何限制,這些計算機可能被置于不同的機柜上,也可能被布署在不同的機房中,還可能在不同的城市中,對于小型的網(wǎng)站甚至可能分布在不同的國家和地區。
不同的資料介紹起分布式系統的特性,雖然說(shuō)法不同,但都大同小異,此處我們針對于要實(shí)現的分布式爬蟲(chóng),總結為以下3個(gè)特征:
消息傳遞完成特定需求
消息傳遞的方式:
分布式系統的結構圖:
一般對外會(huì )使用REST,模塊內部會(huì )使用RPC,效率會(huì )更高一些,模塊之前:中間件、REST
針對于目前我們遇見(jiàn)的問(wèn)題,我們給予解決方案分布式爬蟲(chóng)架構,來(lái)設計分布式爬蟲(chóng)項目的構架:
1.限流問(wèn)題
問(wèn)題:
單節點(diǎn)承受的流量是有限
解決:
將Worker放在不同的節點(diǎn)
2.去重問(wèn)題
問(wèn)題:
單節點(diǎn)承受的去重數據量有限
無(wú)法保存之前去重結果(因為是存入到顯存(map))
解決:
基于Key-Value Stroe(如Redis)進(jìn)行分布式去重
3.數據儲存問(wèn)題
問(wèn)題:
存儲部份的結構,技術(shù)棧和爬蟲(chóng)部份區別很大
進(jìn)一步優(yōu)化須要特殊的ElasticSearch技術(shù)背景
解決:
存儲服務(wù)
所以最終我們的分布式爬蟲(chóng)構架如下:
還有一個(gè)關(guān)鍵點(diǎn):從Channel進(jìn)化到分布式
之前我們?yōu)榱藢?shí)現并發(fā),使用了大量的goroutine以及Channel。那我們就可以開(kāi)啟一個(gè)遠程的RPC服務(wù)分布式爬蟲(chóng)架構,然后進(jìn)行同步的調用。
RPC有很多種做法,本文采用jsonrpc。
源代碼 查看全部

分布式系統是一個(gè)硬件或軟件組件分布在不同的網(wǎng)路計算機上,彼此之間僅僅通過(guò)消息傳遞進(jìn)行通訊和協(xié)調的系統。簡(jiǎn)單來(lái)說(shuō)就是一群獨立計算機集合共同對外提供服務(wù),但是對于系統的用戶(hù)來(lái)說(shuō),就像是一臺計算機在提供服務(wù)一樣。分布式意味著(zhù)可以采用更多的普通計算機(相對于高昂的大型機)組成分布式集群對外提供服務(wù)。計算機越多,CPU、內存、存儲資源等也就越多,能夠處理的并發(fā)訪(fǎng)問(wèn)量也就越大。
從分布式系統的概念中我們曉得,各個(gè)主機之間通訊和協(xié)調主要通過(guò)網(wǎng)路進(jìn)行,所以分布式系統中的計算機在空間上幾乎沒(méi)有任何限制,這些計算機可能被置于不同的機柜上,也可能被布署在不同的機房中,還可能在不同的城市中,對于小型的網(wǎng)站甚至可能分布在不同的國家和地區。
不同的資料介紹起分布式系統的特性,雖然說(shuō)法不同,但都大同小異,此處我們針對于要實(shí)現的分布式爬蟲(chóng),總結為以下3個(gè)特征:
消息傳遞完成特定需求
消息傳遞的方式:
分布式系統的結構圖:

一般對外會(huì )使用REST,模塊內部會(huì )使用RPC,效率會(huì )更高一些,模塊之前:中間件、REST
針對于目前我們遇見(jiàn)的問(wèn)題,我們給予解決方案分布式爬蟲(chóng)架構,來(lái)設計分布式爬蟲(chóng)項目的構架:
1.限流問(wèn)題
問(wèn)題:
單節點(diǎn)承受的流量是有限
解決:
將Worker放在不同的節點(diǎn)

2.去重問(wèn)題
問(wèn)題:
單節點(diǎn)承受的去重數據量有限
無(wú)法保存之前去重結果(因為是存入到顯存(map))
解決:
基于Key-Value Stroe(如Redis)進(jìn)行分布式去重


3.數據儲存問(wèn)題
問(wèn)題:
存儲部份的結構,技術(shù)棧和爬蟲(chóng)部份區別很大
進(jìn)一步優(yōu)化須要特殊的ElasticSearch技術(shù)背景
解決:
存儲服務(wù)

所以最終我們的分布式爬蟲(chóng)構架如下:

還有一個(gè)關(guān)鍵點(diǎn):從Channel進(jìn)化到分布式
之前我們?yōu)榱藢?shí)現并發(fā),使用了大量的goroutine以及Channel。那我們就可以開(kāi)啟一個(gè)遠程的RPC服務(wù)分布式爬蟲(chóng)架構,然后進(jìn)行同步的調用。

RPC有很多種做法,本文采用jsonrpc。
源代碼


