分布式爬虫
什么是分布式爬虫
默认情况下scrapy是单机爬虫,只能在一台电脑上运行
因为爬虫调度器当中的queue去重和set集合都是在本机上创建的
其他的计算机无法访问另外一台计算机上的内存的内容
分布式爬虫用一个共同的程序,同时部署到多台电脑上运行
这样可以提高爬虫的速度 实施分布式爬虫
分布式爬虫的前提
1 保证每一台计算机都能够正常执行scrapy命令 能够启动爬虫
2 要保证所有的爬虫程序访问同一队列的一个set集合
3 想要保证多台计算机共用一个queue队列和set集合 scrapy 中是结合scrapy redis完成的
分布式爬虫可以让所有的机器上的爬虫程序从同一个队列中获取request请求,并且每一个机器取出的
request的请求对象 是不一样的,直到所有的request被请求完
Redis的简介
Redis是一个开源的使用ANSI C语言编写,支持网络,可基于内存可持久化的日志型 key-value数据库
并且提供多语言的API
redis命令
redis-server redis.windows.conf
开启服务
redis-cli -h ip地址 -p 端口号
连接服务
set task1 nihao
get task1
rename task1 nihao 重命名
redis的特点
优点
默认使用持久化数据方式 体积小使用方便
如果存储数据较大的时候 启动速度相对快
数据库中的数据和内存中的数据可以相互访问
缺点
从安全的角度来说持久化数据可能会崩溃,造成数据丢失
redis实现分布式的前提首先要配置服务器主从
服务器配置主从的目的
1 达到备份的功能 一旦数据master崩溃,而数据库中还有数据,可以将其中的一个slaver重新作为主服务器
从而恢复redis的正常运行
2 一个redis服务器负责读写,性能较低 通过主从减轻redis的压力
redis主从配置
redis作为缓存的服务器 主要是将内存中的进行缓存 但是一台机器的性能和内存是有限的
当对于redis数据库的数据进行数据读写的量较大的时候,一台redis就不能满足需求的时候
此时,需要将redis部署在多台机器上
用于写入数据的机器称之为master而只负责读取数据的redis称之为slave