(12)分布式下的爬虫Scrapy应该如何做-浅析分布式
我们先了解一下分布式,以下的内容在很早之前分享在一个爬虫群里面,现在拿出来重新回顾一下。
大家面试或者聊天的时候,装逼都会问,分布式,你会吗?那什么是分布式,为什么要分布式,怎么样实现分布式,我们先从逻辑上思考这三个问题
-
是什么
-
为什么
-
怎么样
啥是分布式
分布式说白了,就是你是一个有钱的地主,你可以出钱请很多人帮你做同样的事情,多机器执行同样的从任务,看着像一台机器,而且,在你需要的时候可以很轻松的横向拓展,实现高效的性能转换,这才是重点
那为什么要用分布式
简单来说,你感觉到一台机器已经明显的力不从心了,这个时候简单的做法,我纵向的加强机器,加内存,换 CPU,加宽带,那对于爬虫来说,这样做真的好吗?
我们假想一个场景,假设你打算纵向的拓展机器 ,加内存,加CPU,我多开线程(进程)来使用spider ,当然,这个时候没啥问题,假设你断电了,或者某个爬虫出现不可逆的错误,那你只能干瞪眼了,如果你有很强的状态保存机制,那没啥还可以从断掉的地方从新开始,那如果没有,就只能悲剧了。只能从来,和迅雷下片到99%一样,只能重新来了,说实话这样有点郁闷的。
分布式针对爬虫来说比较适应,因为将风险分散了,那有没有坏处呢?辩证的看,当然有,你的运维的成本上升了,但是鱼和熊掌不可兼得,两害相侵取其轻者。
怎么用实现分布式
其实网上已经有现成的轮子了
对比过scrapy redis 的代码,它的主要切入点是将scrapy 的队列接入到redis里面,这样取和存都是直接和redis打交道,去重都有redis里面,很方便。
我将要讲的是另外一种思路。
请参考下一篇文章 :(13)分布式下的爬虫Scrapy应该如何做-分布式架构
- 原文作者:大鱼
- 原文链接:https://brucedone.com/archives/795/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。