分布式技術(shù)
基于Java的小型分布式網(wǎng)路爬蟲(chóng)體系結構
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 302 次瀏覽 ? 2020-05-11 08:02
【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)! 查看全部
分布式網(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)!
【Golang實(shí)現網(wǎng)路爬蟲(chóng)】分布式爬蟲(chóng)系統構架
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 354 次瀏覽 ? 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。
源代碼
基于Java的小型分布式網(wǎng)路爬蟲(chóng)體系結構
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 302 次瀏覽 ? 2020-05-11 08:02
【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)! 查看全部
分布式網(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)!
【Golang實(shí)現網(wǎng)路爬蟲(chóng)】分布式爬蟲(chóng)系統構架
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 354 次瀏覽 ? 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。
源代碼


