scrapy 分布式原理

Scrapy单机架构

在本机维护一个爬取队列,Scheduler进行调度。
在这里插入图片描述
多台主机协作的关键是什么?共享爬取队列。
在这里插入图片描述

分布式爬虫架构

在这里插入图片描述
在这里插入图片描述

队列用什么维护?

Redis,非关系型数据库,Key-Value形式存储,结构灵活。

是内存中的数据结构存储系统,处理速度快,性能好。

提供队列、集合等多种存储结构,方便队列维护。

怎样来去重?

Redis 提供集合数据结构,在 Redis 集合中存储每个 Request 的指纹。
在向 Request 队列中加入 Request 前首先验证这个 Request 的指纹是否已经加入集合中。

如果已存在,则不添加Request到队列,如果不存在,则将Request添加入队列并将指纹加入集合。

怎样防止中断?

在每台从机Scrapy启动时都会首先判断当前Redis Request队列是否为空。
如果不为空,则从队列中取得下一个Request执行爬取。
如果为空,则重新开始爬取,第一台从机执行爬取向队列中添加Request。

怎样实现该架构?

Scrapy-Redis库实现了如上架构,改写了Scrapy的调度器,队列等组件。利用它可以方便地实现Scrapy分布式架构。

https://github.com/rolando/scrapy-redis

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值