分布式scrapy_redis源码总结,及其架构

分布式scrapy的组件源码介绍完了,大致总结一下,相关组件目录如下:

《RedisSpider的调度队列实现过程及其源码》

《scrapy中scrapy_redis分布式内置pipeline源码及其工作原理》

《scrapy分布式调度源码及其实现过程》

《scrapy分布式Spider源码分析及实现过程》

《scrapy分布式去重组件源码及其实现过程》

《scrapy_redis中序列化源码及其在程序设计中的应用》

《scrapy_redis分布式组件Connection源码解读及工作原理》

其架构如图:

image

在对比scrapy架构:

image

在架构上scrapy_redis比scrapy多了一个中介Redis,正是通过Redis实现的去重和数据储存,同时scrapy_redis实现了四个组件的重写,Scheduler(调度)、Duplication Filter(去重)、 Item Pipeline(数据管道)、Base Spider(爬虫基类)

分布式爬虫运行机制如下:

  • 要求运行在不同机器上的源码一致,尤其是Redis的配置,相同的Redis才能实现共同去重和分布式爬虫之间的通信,同时相应的在配置文件setting.py中启用scrapy_Rediszi自定义实现的组件
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"

至于pipeline在需要使用Redis储存数据的情况下也可以启用

  • Spider开始运行,构造Request对象,然后根据Request对象的URL及其其他headers信息对Request去重
  • 去重后的Request,会被调度序列化后放入Redis实现的队列或者堆栈或者优先级队列中
  • 适当时候会取出Request交给下载器,然后开始下载,下载完的resposne对象会交给Spider解析,从而继续上一个流程。

你可能感兴趣的:(分布式scrapy_redis源码总结,及其架构)