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

    浏览量

    9376
  • Redis
    +关注

    关注

    0

    文章

    390

    浏览量

    12070
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【节能学院】Acrel-1000DP分布式光伏监控系统奉贤平高食品 4.4MW 分布式光伏应用

    摘要:“双碳”和新型电力系统建设背景下,分布式光伏接入比例不断提高,对配电网电压、调度运行及调峰等环节造成强烈冲击。本文设计包含平台层、设备层二层架构体系的分布式光伏管控平台,以及小
    的头像 发表于 08-23 08:04 3318次阅读
    【节能学院】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>应用

    MySQL数据库是什么

    开发、企业应用和大数据场景。以下是其核心特性和应用场景的详细说明: 核心特性 关系数据库模型 数据以 表(Table) 形式组织,表由行(记录)和列(字段)构成。 通过 主键、外键
    的头像 发表于 05-23 09:18 931次阅读

    多通道电源管理芯片在分布式能源系统的优化策略

    理、可靠性设计以及系统集成为主轴展开分析,为分布式能源系统效能提升提供坚实理论基石与创新实践路径。 关键词: 多通道电源管理芯片;分布式能源
    的头像 发表于 05-16 15:22 637次阅读

    分布式存储数据恢复—虚拟机上hbase和hive数据库数据恢复案例

    分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库分布式存储故障:
    的头像 发表于 04-17 11:05 520次阅读

    抗干扰CAN总线通信技术分布式电力系统的应用

    摘要 :随着分布式电力系统的广泛应用,其通信系统的可靠性与稳定性受到了前所未有的挑战。CAN总线通信技术以其卓越的抗干扰性能和可靠性,众多通信技术
    的头像 发表于 04-14 18:24 728次阅读

    MCU-40自动测量是如何实现分布式模块化?

    岩土工程、大型基建和能源设施的安全监测,传统的集中式数据采集系统往往面临布线复杂、扩展性差、容错率低等挑战。南京峟思工程仪器有限公司推出的MCU-40
    的头像 发表于 04-10 14:03 542次阅读
    MCU-40<b class='flag-5'>型</b>自动测量是如何实现<b class='flag-5'>分布式</b>模块化?

    浅谈分布式光伏系统工业企业的设计及应用

    主要对工业厂区屋顶分布式光伏发电系统的设计及应用进行研究,为工业厂区能源供应提供一种全新的解决思路和技术支持。介绍了工业厂区屋顶分布式光伏系统及其优势,
    的头像 发表于 03-21 14:24 734次阅读
    浅谈<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系统</b><b class='flag-5'>在</b>工业企业的设计及应用

    分布式存储有哪几种类型?

    分布式存储有哪几种类型?分布式存储系统是一种将数据分散存储多台独立节点上的技术,根据数据模型可
    的头像 发表于 02-20 11:00 1135次阅读

    分布式云化数据库有哪些类型

    分布式云化数据库有哪些类型?分布式云化数据库主要类型包括:关系分布式数据库、非关系
    的头像 发表于 01-15 09:43 889次阅读

    MySQL数据库的安装

    MySQL是一个开源免费的关系数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。 MySQL 最流行的关系
    的头像 发表于 01-14 11:25 873次阅读
    MySQL<b class='flag-5'>数据库</b>的安装

    关系数据库和非关系区别

    关系数据库和非关系数据库多个方面存在显著差异,主机推荐小编为您整理发布关系
    的头像 发表于 01-10 09:58 1455次阅读

    数据库是哪种数据库类型?

    数据库是一种部署虚拟计算环境数据库,它融合了云计算的弹性和可扩展性,为用户提供高效、灵活的数据库服务。云
    的头像 发表于 01-07 10:22 819次阅读

    基于ptp的分布式系统设计

    现代分布式系统,精确的时间同步对于确保数据一致性、系统稳定性和性能至关重要。PTP(Prec
    的头像 发表于 12-29 10:09 983次阅读

    HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据文件资产迁移

    提供了async版本供该场景使用。 当前,wantParams“sessionId”字段迁移流程中被系统占用,建议开发者wantParams
    发表于 12-24 10:11

    HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据权限与基础数据

    提供了async版本供该场景使用。 当前,wantParams“sessionId”字段迁移流程中被系统占用,建议开发者wantParams
    发表于 12-24 09:40