换ip软件,代理ip软件,更改ip地址-智游代理
首页 IP软件套餐 HTTP代理套餐 API提取 使用帮助 新闻资讯 长效IP 注册 登录 实名验证

在线咨询

800819380 售前客服
在线客服,实时响应

客户经理:
13326404693

473197630 QQ群
473197630

微信客服

您的位置: 首页 > 新闻资讯 > 代理ip池 > 正文

高可用分布式代理IP池:架构篇

发布时间:2019年07月17日 来源:智游代理 www.zhiyoudaili.com

概述


历时大致两个月,到现在终于完成了高可用分布式代理IP池(https://github.com/SpiderClub/haipproxy),目前开源在了Github上。写这个项目的原因主要有两点,一是自己平时的部分工作需要和爬虫打交道,代理IP在有的时候可以发挥非常重要的作用,调研过一些开源的代理IP采集程序,发现在抓取、解析、校验、资源调度等这些方面总有一些不尽人意的地方;二是和一个网友(不严格的说算得上是伯乐)的交流让我有了关于使用Scrapy来写分布式爬虫的一些想法,正好可以借助这个机会来尝试证实这些想法。


架构设计


这篇文章的目的是阐述haipproxy的主要架构和流程。该项目关键部分是


基于Scrapy和Redis的分布式爬虫,用作IP抓取和校验,对应于项目的crawler


基于Redis实现的分布式任务调度工具,对应于项目的scheduler和redis_util.py


Crawler分为代理抓取和校验,两者实现思想类似,主要使用Scrapy的spider_idle信号和DontCloseSpider异常来阻止Scrapy在没有数据的时候关闭,灵感来自scrapy-redis(https://github.com/rmax/scrapy-redis)。为了方便阐述,我画了一张包含各个组件的流程图,如下


高可用分布式代理IP池:架构篇


haipproxy workflow


启动调度器,包括代理爬虫调度器和校验爬虫调度器。调度器会读取rules.py中待抓取的网站,将其编排成任务存入各个任务队列中


启动各个爬虫,包括IP抓取和校验程序。项目中爬虫和调度器都是高可用的,可以根据实际情况进行分布式部署,无需改动代码。由于本文的目标不是写成该项目的详细使用文档,所以省略了如指定启动爬虫类型和调度器类型的介绍


代理IP采集爬虫启动后会到对应的任务队列中获取任务并执行,再把获取到的结果存入一个init队列中


init队列由一个特殊的校验器HttpbinInitValidator进行消费,它会过滤掉透明代理,再把可用代理输入各个Validated队列中


调度器会定时从Validated队列中获取代理IP,再将其存入一个临时的队列。这里用一个临时队列是为了让校验更加公平,如果直接从Validated队列中获取资源进行校验,那么会增大不公平性


这时候各个校验器(非init校验器)会从对应的临时队列中获取待校验的IP并对其进行校验,此处省略校验细节


校验完成后再将其放回到Validated队列中,等待下一轮校验


请求成功率(体现为分数)、响应速度和最近校验时间满足settings.py所配置要求的代理IP将会被爬虫客户端所消费


为了屏蔽各个调用语言的差异性,目前实现的客户端是squid客户端,它可以作为爬虫客户端的中间件


到此,整个流程便完了。


效果测试


以单机模式部署haipproxy和测试代码(https://github.com/SpiderClub/haipproxy/blob/master/examples/zhihu/zhihu_spider.py),以知乎为目标请求站点,


每一万条成功请求为统计结果,实测抓取效果如下


高可用分布式代理IP池:架构篇


可见haipporxy的代理效果还算不错,在开始的时候可以达到1w/hour的请求量,几个小时候请求量请求量


降为了5k/hour。降低的结果可能有三个:


(1)随着数据量的增大,Redis的性能受到了一定的影响;


(2)知乎校验器在把Init Queue中的代理消费完之后,由于是定时任务,所以导致某段时间内新鲜的IP空缺。而免费IP大多数都是短效的,所以这段时间出现了IP的空缺;


(3)由于我们采用的是greedy模式调用IP,它的调用策略是: 高质量代理IP会一直被调用直至该代理IP不能用或者被封,而低应速度IP会轮询调用。这也可能导致高质量IP的空缺。


可见IP校验和调用策略还有很大的优化空间。希望志同道合的朋友加入进来一起优化,这也挺有意思的。


转载注明来自:智游代理IP http://www.zhiyoudaili.com/

相关文章内容简介

1 重启路由器IP会改变吗

我们在上网的时候有时候IP会受到限制,限制后就要换IP才能继续访问。我们现在上网一般都用的是路由器,那么,重启路由器IP会改变吗?我们平时使用的上网方式一般都是PPPOE拨号,用的是动态IP,这样是重启路由器是可以更换IP的。重启路由器的方式一般有以下三种:1.手机重启。现在路由器都可以通过手机管理,直接在手机上将路由器重启就可以了。2.电脑设置重启。在浏览器中打开路由器的登录地址,在管理中心中,打开系统工具,就可以看到重启路由器选项,点击就可以了。3.断电。如果忘了密码或者不方便登录,可以直接给路由器断电,拔电电源后两分钟左右,重新插上就可以了。路由器重启无论哪种方式都需要几分钟的时间,重启完成后,IP地址就改变了。如果是工作方便需要换IP,建议用代理IP来操作,过程中不会断网,也更方便。智游代理可以提供各种套餐,很多业务都可以在智游代理找到性价比极高的套餐。... [阅读全文]

2 丰富的代理IP节点有什么优势

  选择代理IP的时候偶尔能看到这样的介绍:代理IP节点丰富,线路遍布全国。很多人不明白代理IP节点丰富有什么作用,或者说有什么优点,今天我们来讨论下。  一、代理IP地区节点越丰富,风险性就越小。假如是这样一个业务场景,请求某某网站并采集一些数据。如果您的代理IP的节点只有一个,也就是说都是一个地区的IP,那么您天天用这个地区的代理IP去请求该网站,并且访问量还挺大。那么,哪怕您的请求策略再怎么完美,程序运行的再高效,也会被目标网站管理员轻松发现,毕竟连续好几天这个地区的访问量这么高,这么密集,肯定有猫腻,封了再说。如果是全国各地的IP,毫无规律的去请求网站,那么被封的几率就会少很多。  二、代理IP地区节点越丰富,IP的重复率越低。代理IP全国节点丰富,ip资源就丰富,每天流水量大,ip量大可以降低重复率,对于爬虫工作者来说,可以提高工作效率,节约数据信息采集时间。  三、代理IP地区节点越丰富,IP的可选性越大。很多用户需要指定一些地区ip资源,来满足业务的需求,如果地区资源少,那么可选性就低,很多业务无法满足,没有ip资源的接入,代理ip... [阅读全文]

热门标签

推荐阅读

  1. 25

    2019-09

    搭建动态IP池的方案

    爬虫的运行过程中需要大量的代理ip来支持数据采集工作,今天小编就来分享一下搭建动态IP池的方案,供大家参考。1、爬取免费代理IP,搭建代理IP池 这种方法用的人非常的多,因为它是免费

  2. 17

    2019-07

    高可用分布式代理IP池:架构篇

    历时大致两个月,到现在终于完成了高可用分布式代理IP池​(https://github.com/SpiderClub/haipproxy),目前开源在了Github上。写这个项目的原因主要有两点,一是自己平时的部分工作需要和爬虫打交

  3. 20

    2018-11

    代理ip池介绍

    我们在做爬虫的时候经常会遇到一些封IP的问题,如果用代理的话就可以伪装IP进行爬虫的请求,我们在做爬虫请求的时候可能需要非常多的IP

  4. 30

    2018-11

    代理IP池维护方法介绍

    很多朋友不知道代理IP池如何维护,今天小编就给大家介绍一下,请看下面。

  5. 04

    2019-09

    怎么搭建一个独享的IP代理池?如何维护?

    想让爬虫畅通无阻的工作,是无数爬虫者的理想工作状态。但其实解决这种问题也并不是什么难题,只要拥有一个独享IP池,就可以让爬虫避免被封锁的命运。那么我们现在想要解决的问题就是

  6. 02

    2019-10

    爬虫怎么构建代理IP池

    做网络爬虫时,一般对代理IP的需求量比较大。因为在爬取网站信息的过程中,很多网站做了反爬虫策略,可能会对每个IP做频次控制。这样我们在爬取网站时就需要很多代理IP。代理IP的获取,