分布式爬虫架构_分布式爬虫工具有哪些

分布式爬虫架构_分布式爬虫工具有哪些目录分布式爬虫框架消息队列Redis和Scrapy-Redis分布式爬虫框架分布式爬虫框架分为两种:控制模式(左)和自由模式(右):控制模式中的控制节点是系统实现中的瓶颈,自由模式则面临爬行节点之间的通信处理问题。因此,在实际工程中,我们通常使用混合模式:各个爬行节点有各自的功能(爬取的对象不同),它们都注册到一个服务节点上,服务节点能分辨各个爬行节点的分工,用户的请求存放在队列中,处理不同请求的程序从队列中取出请求,然后询问服务节点,由服务节点分配爬行节点给请求的处理程序。下面介绍分布式爬

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

分布式爬虫框架

分布式爬虫框架分为两种:控制模式(左)和自由模式(右):
fig1
控制模式中的控制节点是系统实现中的瓶颈,自由模式则面临爬行节点之间的通信处理问题。因此,在实际工程中,我们通常使用混合模式:

  • 各个爬行节点有各自的功能(爬取的对象不同),它们都注册到一个服务节点上,服务节点能分辨各个爬行节点的分工,用户的请求存放在队列中,处理不同请求的程序从队列中取出请求,然后询问服务节点,由服务节点分配爬行节点给请求的处理程序。

下面介绍分布式爬虫框架的几个重要模块;

URL Manager:爬虫系统的核心。负责URL的重要性排序,分发,调度,任务分配。单个的爬虫完成一批URL的爬取任务之后,会找 URL Manager要一批新的URL。一般来说,一个爬取任务中包含几千到一万个URL,这些URL最好是来自不同的host,这样,不会给一个 host在很短一段时间内造成高峰值。

Content Acceptor:负责收集来自爬虫爬到的页面或是其它内容。爬虫一般将爬取的一批页面,比如,一百个页面,压缩打包成一个文件,发送给Content Acceptor。Content Acceptor收到后,解压,存储到分布式文件系统或是分布式数据库,或是直接交给 Content Parser(比如基于BS4写的脚本)去分析。

Proxy Manager:负责管理系统用到的所有Proxy,说白了,负责管理可以用来爬取的IP。爬虫询问Proxy Manager,得到一批 Proxy IP,然后每次访问的时候,会采用不同的IP。如果遇到IP被屏蔽,即时反馈给Proxy Manager,Proxy Manager会根据哪个host屏蔽了哪个IP做实时的智能的调度。

分布式爬虫其实和单机爬虫是一样的,只不过分布式爬虫把工作分配到不同的机器上执行,scrapy是用于单机爬虫的框架。

消息队列

分布式爬虫中节点的通信是一个重要问题,所以需要消息队列。

消息队列:消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

消息队列封装了任意节点之间的通信路径。节点只需把消息发送到消息队列就做下一步工作,而不是关心是否成功发送到某个目标节点。

通过消息队列,应用程序可独立地执行–它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。通过消息队列,应用程序可独立地执行。

Redis和Scrapy-Redis

Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Key-Value的形式适合构建消息队列。

scrapy-redis是为了更方便地实现scrapy分布式爬取,而提供了一些以redis为基础的组件。

安装方式:

pip install scrapy-redis

Jetbrains全家桶1年46,售后保障稳定

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222401.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IIS启动就报错:发生意外错误0x8ffe2740

    IIS启动就报错:发生意外错误0x8ffe2740IIS启动就报错:发生意外错误0x8ffe2740现象:  IIS的WEB服务器(停止),启动不了。启动就报错:发生意外错误0x8ffe2740。分析:  如果系统中存在端口冲突就有可能发生本情况.IIS默认使用80端口进行HTTP通信.如果除IIS外的应用程序正在运行并且正在相同的IP…

    2022年7月26日
    7
  • STM32之sprintf函数[通俗易懂]

    STM32之sprintf函数[通俗易懂]单片机中Sprint函数:说明1:使用该函数时必须包含stdio.h头文件,否则容易卡死程序说明2:sprintf与printf函数的区别:二者功能相似,但是sprintf函数打印到字符串中(将数值转换成对应字符串形式,就是变换成ASCALL码),而printf函数打印输出到屏幕上。在单片机中将数值转换成字符串是sprintf函数最广的用途。Sprint函数具体形式:intsp

    2022年6月29日
    34
  • mysql months_between_months_between()用法「建议收藏」

    mysql months_between_months_between()用法「建议收藏」orcl中months_between()函数用法如下:格式:即MONTHS_BETWEEN(日期1,日期2)例如:selectmonths_between(to_date(‘2018-10-9′,’yyyy-mm-dd’),to_date(‘2017-10-09′,’yyyy-mm-dd’))mfromdual;注:M:月selectmonths_between(to_date(’20…

    2022年7月12日
    14
  • 国家标准《电子计算机机房设计规范》(GB50174-93)_计算机机房建设标准规范

    国家标准《电子计算机机房设计规范》(GB50174-93)_计算机机房建设标准规范dgtool:GB50174-2008电子计算机机房设计规范目次1总则(1)2术语(2)3机房分级与性能要求(6)3.1机房分级(6)3.2性能要求(6)4机房位置及设备布置(7)4.1机房位置选择(7)4.2机房组成(7)4.3设备布置(8)5环境要求(9)5.1温度、相对湿度及空气含尘浓度(9)5.2噪声、电磁干扰、振动及静电(9)6建筑与结构(1o)6.1一般规定(1o)6.2人流、物…

    2022年10月2日
    2
  • linux系统卸载程序命令行,Linux系统中完全卸载删除程序的命令[通俗易懂]

    linux系统卸载程序命令行,Linux系统中完全卸载删除程序的命令[通俗易懂]如果您在数据中心服务器或本地服务器中使用Ubuntu或任何其他基于debian的发行版系统,您可能会遇到需要卸载软件的情况。一般情况下,您会登录并运行命令:sudoapt-getremovepackagename(其中packagename是要删除的程序名称)。但是,这样做会留下一些问题,比如安装依赖项和配置文件。这些分散的应用程序和文件不仅占用空间,而且可能导致安全问题。要完全删除的话怎么…

    2025年10月10日
    2
  • ribbon自定义负载均衡策略,应用所有服务_dubbo的负载均衡策略

    ribbon自定义负载均衡策略,应用所有服务_dubbo的负载均衡策略Ribbon默认的负载均衡策略默认的有下面几种:我们也可以自定义负载均衡策略:修改springcloud-consumer-dept-80的主启动类:下面开始编写自定义配置类MySelfRule,但这个类不能乱放!官方文档给出警告:这个自定义的类不能放在@ComponentScan所扫描的当前包以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,也就是我们达…

    2022年10月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号