几种爬虫分布式架构
- scrapy——redis,成熟的分布式框架,redis作为通讯载体读写迅速。
- RabbitMQ消息中间件
- 得益于确认机制,可以在高可靠性和高数据要求情景中,避免数据抓取的遗漏和丢失。
- 实现可以利用scrapy_redis调度执行
- celery分布式任务队列
- 用于异步操作,如tornado ,django异步任务中,通过接口,打造爬虫框架,供他人使用
原生scrapy无法实现分布式原因:
- 原生的scrapy中的调度器不可以被共享
- 原生的scrapy的管道不可以被共享
scrapy_redis分类
- 主从分布式爬虫:
由一台master服务器, 来提供url的分发, 维护待抓取url的list。由多台slave服务器执行网页抓取功能, slave所抽取的新url,一律由master来处理解析,而slave之间不需要做任何通信。 - 对等分布式爬虫:
由多台相同的服务器集成,每台服务器可单独运作,完成爬虫工作,每台服务器之间的分工有一定的运算逻辑(ex: hash),由运算(配置)的结果,来决定由哪台服务器做抓取网页的工作。
常用的主从式实现分布式思路:
- 组成部分:
- Master端(核心服务器)
- 搭建redis,存储start_url,r
- Master端(核心服务器)