我们先了解一下分布式,以下的内容在很早之前分享在一个爬虫群里面,现在拿出来重新回顾一下。

大家面试或者聊天的时候,装逼都会问,分布式,你会吗?那什么是分布式,为什么要分布式,怎么样实现分布式,我们先从逻辑上思考这三个问题

  • 是什么

  • 为什么

  • 怎么样

啥是分布式

分布式说白了,就是你是一个有钱的地主,你可以出钱请很多人帮你做同样的事情,多机器执行同样的从任务,看着像一台机器,而且,在你需要的时候可以很轻松的横向拓展,实现高效的性能转换,这才是重点

那为什么要用分布式

简单来说,你感觉到一台机器已经明显的力不从心了,这个时候简单的做法,我纵向的加强机器,加内存,换 CPU,加宽带,那对于爬虫来说,这样做真的好吗?

我们假想一个场景,假设你打算纵向的拓展机器 ,加内存,加CPU,我多开线程(进程)来使用spider ,当然,这个时候没啥问题,假设你断电了,或者某个爬虫出现不可逆的错误,那你只能干瞪眼了,如果你有很强的状态保存机制,那没啥还可以从断掉的地方从新开始,那如果没有,就只能悲剧了。只能从来,和迅雷下片到99%一样,只能重新来了,说实话这样有点郁闷的。

分布式针对爬虫来说比较适应,因为将风险分散了,那有没有坏处呢?辩证的看,当然有,你的运维的成本上升了,但是鱼和熊掌不可兼得,两害相侵取其轻者。

怎么用实现分布式

其实网上已经有现成的轮子了

对比过scrapy redis 的代码,它的主要切入点是将scrapy 的队列接入到redis里面,这样取和存都是直接和redis打交道,去重都有redis里面,很方便。

我将要讲的是另外一种思路。

请参考下一篇文章 :(13)分布式下的爬虫Scrapy应该如何做-分布式架构