redis队列去重_scrapy-redis分布式

一,原理及介绍

类似于hadoop中的master-slave

master-主机:维护爬虫队列。

slave-从机:数据爬取,数据处理,数据存储。

二,队列用什么来维护

可以是数据库,数据结构(列表等),文件

三,redis

1,redis队列(非关系型数据库,KEY-VALUE形式,结构灵活)

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

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

四,如何在redis读写时去重?(因为是多台主机访问同一个队列的数据,同时读写,难免会造成读取的是同一个数据,例如,同时请求一个url)

1,redis集合(集合中的元素都是不重复的)

Redis提供集合数据结构,在Redis集合中存储每个Request的指纹(是一个算法。每一个Request对应唯一2的指纹,相同的Request对应相同的指纹)。

在向Request队列中加入Request前,首先验证这个Request的指纹是否已经在这个集合中。

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

总结,相当于在队列的基础上加一个集合来存放指纹。

五,怎样防止中断?(某一台主机出现问题而中断)

1,启动中断

在每台从机Scrapy启动时都会首先判断当前Redis Request队列是否为空

如果不为空,则从队列取得下一个Request执行。

如果为空,则从新开始爬取,第一台从机执行爬取向队列中添加Request。

六,实现架构

scrapy-redis:实现了master-slave的架构,改写了scrapy的调度器,队列等组件。利用scrapy-redis可以很方便的实现scrapy分布式的架构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值