国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鍵值型數據庫在分布式爬蟲系統中的應用分析

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-25 18:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

張斌 楊彥松 廖雨寒

睿哲科技股份有限公司

一、背景

隨著互聯網的高速發展,網絡上的數據量呈現爆發式的增長。單節點運行的爬蟲系統,在性能等各方面都無法滿足現有的業務需求。因此網絡爬蟲基于多節點的分布式協同運行方案成為解決爬蟲性能瓶頸的不二之選。而作為分布式系統的存儲中間件,key-value數據庫(redis和pika)在數據結構的支持,高吞吐的性能,接口的易用性等方面都是不錯的選擇。

二、Redis和Pika

Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value高性能存儲系統。它支持存儲多種類型的value,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)等。這些數據類型都支持push/pop、add/remove、取交集、并集、差集及更豐富的操作,而且這些操作都是原子性的。與傳統的內存數據庫一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。

Pika是一個開源的可持久化的大容量類redis存儲系統。兼容redis的string、hash、list、zset、set等絕大部分的數據接口,不用修改代碼即可平滑從redis遷移到pika。主要解決redis由于存儲數據量巨大而導致內存不足的內存容量瓶頸,并且可以像redis一樣,通過slaveof命令進行主從備份,支持全同步和部分同步,pika還可以用在twemproxy或者codis中來實現靜態數據分片

本文針對兩種存儲系統,在分布式爬蟲系統中的應用,進行對比,以供參考。

三、兩種數據庫對比

1)Redis:高性能的key-value存儲解決方案。

優勢:

1.高性能:作為內存數據庫,redis擁有超高的吞吐性能;

2.多樣化的數據存儲結構:redis支持string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)等;

劣勢:

1.大數據量存儲承載能力有限,存儲成本高;

2.單線程運行方式易阻塞,相對比較脆弱。

2)Pika:利用磁盤存儲來解決redis的內存容量瓶頸。

優勢:

1.使用Redis協議,兼容redis絕大多數命令,為兩種數據庫共存提供基礎;

2.使用磁盤存儲,解決redis大數據量存儲瓶頸;

3.使用多線程模式,相對比較健壯。

劣勢:

1.受磁盤限制,整體性能相對較差,吞吐量是瓶頸,當吞吐量過高時會出現數據丟失的情況;

2.缺少成熟的集群多節點擴展方案;

3.不支持分庫,對于多業務邏輯分類的場景不太友好。

四、分布式爬蟲系統

目前爬蟲系統進行頁面抓取的主要流程:調度器(Scheduler)接收到request并放入隊列進行排序、去重、轉發等操作,下載器(Downloader)從隊列獲取到待下載的request,從網絡獲取到頁面數據后,提供給爬蟲(spider)進行分析處理。爬蟲從數據中提取新的request給調度器,同時將結構化數據(item)交給數據管道(item pipeline)進行存儲分發等操作。具體流程參考scrapy框架結構圖如下:

要實現分布式爬蟲,首先需對調度器進行修改,用網絡存儲中間件替換本地隊列,通過網絡存儲中間件對request進行多節點分發,同時還需要用中間件存儲request指紋從而實現去重。

五、鍵值型數據庫在分布式爬蟲系統中的應用

要實現上述功能改造,redis這類的高性能key-value數據庫就目前來說是最佳的適用方案。首先redis的高性能能夠保證大量節點進行request的讀取,同時redis支持多種數據結構及其接口,能夠很方便的實現各種隊列的業務邏輯。其中可以用list實現FifoQueue和LifoQueue,用zset實現PriorityQueue,用set實現RFPDupeFilter。同時還可以使用list或者pub/sub來實現多任務調度和分發,不需要再另外引入kafka、MQ這類的消息隊列來做多任務管理,從而減小整個爬蟲系統的架構體積;雖然redis能充分滿足整個爬蟲系統的分布式需求,可是在某些場景下,redis會出現瓶頸;其中存儲容量則是最主要的瓶頸。

在爬取過程中,一個request序列化之后大約占用1KB左右的存儲空間,1GB內存則只能處理大約100萬個request。因為訪問控制之類的原因,爬取一個擁有千萬級頁面的網站,redis就需要大約10GB左右的內存。一臺64G內存的服務器也僅僅只能支持5-7個大型爬取任務的同時執行。

因此引入pika這種以磁盤為主要存儲的類redis數據庫。pika在保留了redis多樣化數據結構的同時,極大的擴展了數據存儲容量,從而解決request的容量瓶頸。

可是pika的無集群模式,同樣對pika的性能產生很大的制約。在不使用SSD硬盤的情況下,只是單獨使用pika會出現大量的慢查詢,導致部分數據丟失的情況。因為沒有集群模式來實現多實例負載均衡,所以pika的性能擴展成本將比redis高不少。

最終在多任務分布式爬蟲系統中,需要用redis和pika兩種中間件來支持整個爬蟲系統的運行。其中redis負責request指紋和任務調度之類高吞吐量的業務,pika則負責request分發這種需要高存儲容量的業務。

六、結束語

以上對Redis和Pika兩種key-value存儲方案在分布式爬蟲系統中的應用做了描述,這兩種方案在實際生產環境中相輔相成,互相配合,才能支撐起一個功能健壯,性能強大的成熟的多任務分布式爬蟲系統。

審核編輯:符乾江

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 應用軟件
    +關注

    關注

    0

    文章

    53

    瀏覽量

    9418
  • Redis
    +關注

    關注

    0

    文章

    392

    瀏覽量

    12186
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TiDB分布式數據庫運維實踐

    TiDB 是 PingCAP 開發的開源分布式關系數據庫,兼容 MySQL 5.7 協議,底層存儲基于 TiKV(分布式 KV 存儲)和 RocksDB。它解決的核心問題是:當單機
    的頭像 發表于 03-04 15:44 ?78次閱讀

    分布式數據恢復—Ceph+TiDB數據恢復報告

    無法正常訪問。目標需要恢復的RBD卷存儲了一臺虛擬機的完整磁盤鏡像,該虛擬機內部運行TiDB分布式數據庫系統,包含重要的業務數據
    的頭像 發表于 02-03 17:22 ?89次閱讀
    <b class='flag-5'>分布式</b><b class='flag-5'>數據</b>恢復—Ceph+TiDB<b class='flag-5'>數據</b>恢復報告

    PLC遠程上下載分布式設備運維系統的作用

    工業4.0與物聯網技術深度融合的背景下,分布式設備運維系統正面臨設備分散、管理復雜、響應滯后等核心挑戰。PLC遠程上下載技術作為連接設備層與管理層的關鍵紐帶,通過打破物理空間限制、實現數據
    的頭像 發表于 11-14 16:51 ?1248次閱讀

    【節能學院】Acrel-1000DP分布式光伏監控系統奉賢平高食品 4.4MW 分布式光伏應用

    摘要:“雙碳”和新型電力系統建設背景下,分布式光伏接入比例不斷提高,對配電網電壓、調度運行及調峰等環節造成強烈沖擊。本文設計包含平臺層、設備層二層架構體系的分布式光伏管控平臺,以及小
    的頭像 發表于 08-23 08:04 ?3498次閱讀
    【節能學院】Acrel-1000DP<b class='flag-5'>分布式</b>光伏監控<b class='flag-5'>系統</b><b class='flag-5'>在</b>奉賢平高食品 4.4MW <b class='flag-5'>分布式</b>光伏<b class='flag-5'>中</b>應用

    分布式光伏發電監測系統技術方案

    分布式光伏發電監測系統技術方案 柏峰【BF-GFQX】一、系統目標 :分布式光伏發電監測系統旨在通過智能化的監測手段,實現對
    的頭像 發表于 08-22 10:51 ?3201次閱讀
    <b class='flag-5'>分布式</b>光伏發電監測<b class='flag-5'>系統</b>技術方案

    一鍵部署無損網絡:EasyRoCE助力分布式存儲效能革命

    分布式存儲的性能瓶頸往往在于網絡。如何構建一個高帶寬、超低時延、零丟包的無損網絡,是釋放分布式存儲全部潛力、賦能企業關鍵業務(如實時數據庫、AI訓練、高性能計算)的關鍵挑戰。
    的頭像 發表于 08-04 11:34 ?1619次閱讀
    一鍵部署無損網絡:EasyRoCE助力<b class='flag-5'>分布式</b>存儲效能革命

    數據庫數據恢復—MongoDB數據庫文件丟失的數據恢復案例

    MongoDB數據庫數據恢復環境: 一臺操作系統為Windows Server的虛擬機上部署MongoDB數據庫。 MongoDB數據庫
    的頭像 發表于 07-01 11:13 ?642次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—MongoDB<b class='flag-5'>數據庫</b>文件丟失的<b class='flag-5'>數據</b>恢復案例

    SQLSERVER數據庫是什么

    支持Linux和容器化環境運行。 核心特點 關系數據庫 基于SQL(結構化查詢語言)進行數據操作,支持表、行、列等結構化存儲。 提供A
    的頭像 發表于 05-26 09:19 ?1173次閱讀

    MySQL數據庫是什么

    開發、企業應用和大數據場景。以下是其核心特性和應用場景的詳細說明: 核心特性 關系數據庫模型 數據以 表(Table) 形式組織,表由行(記錄)和列(字段)構成。 通過 主鍵、外鍵
    的頭像 發表于 05-23 09:18 ?1214次閱讀

    分布式光伏監測難?并網分布式光伏系統光伏功率預測方案

    一、分布式光伏發電系統 ? 安科瑞 鄒玉麗 ? 分布式光伏發電系統的基本設備包括光伏電池組件、光伏方陣支架、直流匯流箱、直流配電柜、并網逆變器、交流配電柜等設備,另外還有供電
    的頭像 發表于 05-20 10:17 ?1216次閱讀
    <b class='flag-5'>分布式</b>光伏監測難?并網<b class='flag-5'>型</b><b class='flag-5'>分布式</b>光伏<b class='flag-5'>系統</b>光伏功率預測方案

    多通道電源管理芯片在分布式能源系統的優化策略

    理、可靠性設計以及系統集成為主軸展開分析,為分布式能源系統效能提升提供堅實理論基石與創新實踐路徑。 關鍵詞: 多通道電源管理芯片;分布式能源
    的頭像 發表于 05-16 15:22 ?897次閱讀

    分布式存儲數據恢復—虛擬機上hbase和hive數據庫數據恢復案例

    分布式存儲數據恢復環境: 16臺某品牌R730xd服務器節點,每臺服務器節點上有數臺虛擬機。 虛擬機上部署Hbase和Hive數據庫分布式存儲故障:
    的頭像 發表于 04-17 11:05 ?722次閱讀

    抗干擾CAN總線通信技術分布式電力系統的應用

    摘要 :隨著分布式電力系統的廣泛應用,其通信系統的可靠性與穩定性受到了前所未有的挑戰。CAN總線通信技術以其卓越的抗干擾性能和可靠性,眾多通信技術
    的頭像 發表于 04-14 18:24 ?1092次閱讀

    MCU-40自動測量是如何實現分布式模塊化?

    巖土工程、大型基建和能源設施的安全監測,傳統的集中式數據采集系統往往面臨布線復雜、擴展性差、容錯率低等挑戰。南京峟思工程儀器有限公司推出的MCU-40
    的頭像 發表于 04-10 14:03 ?808次閱讀
    MCU-40<b class='flag-5'>型</b>自動測量是如何實現<b class='flag-5'>分布式</b>模塊化?

    淺談分布式光伏系統工業企業的設計及應用

    主要對工業廠區屋頂分布式光伏發電系統的設計及應用進行研究,為工業廠區能源供應提供一種全新的解決思路和技術支持。介紹了工業廠區屋頂分布式光伏系統及其優勢,
    的頭像 發表于 03-21 14:24 ?971次閱讀
    淺談<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系統</b><b class='flag-5'>在</b>工業企業的設計及應用