部署流程

  • 首先在master端(服务端),部署redis数据库、MySQL数据库等数据存储工具;
  • 然后在slaver端(分机端)部署分布式爬虫框架;
  • 注意点:在开发的时候首先要保证你的爬虫可以在单机系统下运行成功(数据爬取没问题,反爬也成功解决),然后再进行分布式部署

运行原理

  1. 把所有的分机(slaver)的爬虫运行起来,由于没有start_urls列表,所有分机爬虫现在都在等待start_urls的产生
  2. 通过服务器脚本把那些起始的url放入到“xxx:start_urls”这个redis键中
  3. 所有的slaver去竞争master端的start_urls中的url,一旦竞争到则立即进行爬取,没有竞争到url的slaver(分机)继续等待并监视start_urls和requestsl两个队列
  4. 所有分机如果对某个url访问成功则会把对应的url放入到去重队列dupefilter中,如果没有访问成功,则会启动爬虫本身的重传组件进行重传,多次都不成功,则把这个url重新加入到requests里面供其他人使用
  5. 爬取成功的爬虫通过分布式管道组件将爬取到的数据存入redis数据库的xxx:items这个key中,把爬虫过程中新产生的那些url放入到requests中
  6. 所有的监视requests的那些爬虫从其获取到url,进行爬取,周而复始,直至所有的url全部都进入到去重队列为止

分布式数据库

  • 数据库中有4个key
  • xxx:start_urls:
    起始url,在开启分布式爬虫的时候,所有的slaver端,会从这个key中去提取url(多台主机同时来竞争,竞争到url则发起请求,竞争不到等待),并且对提取到的url发起请求,然后会产生一些新的url,这些新产生的url会放入到xxx:requests这个key中,所有被访问过的start_urls中的url全部都会被删除掉,进入到dupefilter中
  • xxx:requests:
    用于盛放在爬虫运行的过程中新产生的那些url,所有的分布式系统中的slaver端除了竞争start_urls里面的url外,还会竞争requests里面的url,得到url以后发起请求,并且把请求完新产生的url放入到本队列中,同时把访问成功的url从这里删除掉并且放入到dupefilter中
  • xxx:items:
    用于存储爬虫过程中产生的待爬取数据
  • xxx:depefilter:
    存放已经成功爬取过的那些url,是一个去重列表;

分布式的开发与运行流程相关推荐

  1. 分布式调度框架Tbschedule运行流程【03】

    tb-schedule调度:              1.初始化ZK连接              2.创建 baseTaskType节点,检测 本机与注册中心的心跳时间差              ...

  2. destoon php os,destoon运行流程二次开发必看

    destoon系统采用B/S架构,MVC模式开发.融入了模型化.模板.缓存.AJAX.SEO等前沿技术 下面是运行流程,虽然版本有更新但大体上是没有变化太多的//代码首先包含common.inc.ph ...

  3. 分布式资源管理框架YARN的运行流程

    YARN的运行流程 client 端 向 ResourceManager 提交一个任务 jar包 ResourceManager 通过心跳机制连接获取NodeManager 资源的使用情况 Resou ...

  4. 地平线 旭日X3 SDB开发板 (四) yolov3自训练模型板上运行流程记录

    文章目录 一.准备工作 二.检查模型 三.板上运行 四.参考 一.准备工作 onnx 1.5 Opset version 10 自己训练的darknet模型 yolov3 darknet 转 onnx ...

  5. 转载CSDN (MVC WebAPI 三层分布式框架开发)

    前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理,是本文论述的重点.此外,插件技术的应用,富客户端JQ ...

  6. 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构(附源码)

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:zheng gitee ...

  7. 搜狗词库爬虫(2):基础爬虫框架的运行流程

    系列目录: 搜狗词库爬虫(1):基础爬虫架构和爬取词库分类 项目Github地址:github.com/padluo/sogo- 各模块对应的内容如下: getCategory.py,提取词库分类ID ...

  8. 【Docker学习笔记 二】Docker安装、运行流程与常用命令

    上一篇Blog详细介绍了Docker为什么会出现,是为了解决什么问题而出现:Docker的基本组成部分.架构.本篇Blog就来详细了解下Docker如何安装.卸载以及常用的操作命令有哪些.因为Dock ...

  9. MVC WebAPI 三层分布式框架开发

    转载 CSDN (MVC WebAPI 三层分布式框架开发) 转者述:不深不浅,学习直接底部有源码! 前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层 ...

最新文章

  1. Python零碎知识(10):对日期时间的处理
  2. kafka集群操作指南
  3. 前端学习(2409):vs code自定义代码块
  4. python连接ftp服务器获取文件内容_python 访问ftp服务器文件
  5. linux集群的启动和停止,linux平台 spark standalone集群 使用 start-all,stop-all 管理集群的启动和退出...
  6. php 生成缩略图保存,PHP批量生成图片缩略图的方法
  7. nginx log 记录请求的头信息
  8. uygurqa输入法android,uygurqaapp输入法
  9. python抠图_Python实现抠图
  10. 金额要用BigDecimal,原理分析
  11. Derby 数据库内涵
  12. Elasticsearch浅尝搜索
  13. 揭露!华为HR实名控诉:不要相信HR,他们不诚信!
  14. 华为(huawei)园区网的常规部署配置示例
  15. Ubuntu16.04安装搜狗拼音
  16. java的反射机制~~!
  17. linuxprobe 正式开课
  18. 随着我国经济的持续快速发展,城市轻物流需求大幅增长
  19. 秒云助力中电科32所发布“基于拟态应用集成框架的SaaS云管理平台解决方案”
  20. Python for Data Analysis_2nd_Task 5 之 Pandas 进阶

热门文章

  1. Required type: android.support.v4.app.Fragment Provided: android.app.Fragment
  2. linux中删除文件的空行,Linux 删除文件中的空行
  3. PHP中traits是用来干嘛的?trait的语法,作用,特点。
  4. 高数 | 【极限】来 抓大头与抓小头
  5. 智能停车场系统的需求应用分析
  6. 【C++】之引用详解 什么是引用?
  7. 智能座舱如何实现稳定性和疲劳度测试
  8. 市场调研报告-全球与中国软件托管服务市场现状及未来发展趋势
  9. window7下利用DockerToolbox安装Docker
  10. 31个Python实战项目教你掌握图像处理,PDF开放下载