分布式的开发与运行流程
部署流程
- 首先在master端(服务端),部署redis数据库、MySQL数据库等数据存储工具;
- 然后在slaver端(分机端)部署分布式爬虫框架;
- 注意点:在开发的时候首先要保证你的爬虫可以在单机系统下运行成功(数据爬取没问题,反爬也成功解决),然后再进行分布式部署
运行原理
- 把所有的分机(slaver)的爬虫运行起来,由于没有start_urls列表,所有分机爬虫现在都在等待start_urls的产生
- 通过服务器脚本把那些起始的url放入到“xxx:start_urls”这个redis键中
- 所有的slaver去竞争master端的start_urls中的url,一旦竞争到则立即进行爬取,没有竞争到url的slaver(分机)继续等待并监视start_urls和requestsl两个队列
- 所有分机如果对某个url访问成功则会把对应的url放入到去重队列dupefilter中,如果没有访问成功,则会启动爬虫本身的重传组件进行重传,多次都不成功,则把这个url重新加入到requests里面供其他人使用
- 爬取成功的爬虫通过分布式管道组件将爬取到的数据存入redis数据库的xxx:items这个key中,把爬虫过程中新产生的那些url放入到requests中
- 所有的监视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,是一个去重列表;
分布式的开发与运行流程相关推荐
- 分布式调度框架Tbschedule运行流程【03】
tb-schedule调度: 1.初始化ZK连接 2.创建 baseTaskType节点,检测 本机与注册中心的心跳时间差 ...
- destoon php os,destoon运行流程二次开发必看
destoon系统采用B/S架构,MVC模式开发.融入了模型化.模板.缓存.AJAX.SEO等前沿技术 下面是运行流程,虽然版本有更新但大体上是没有变化太多的//代码首先包含common.inc.ph ...
- 分布式资源管理框架YARN的运行流程
YARN的运行流程 client 端 向 ResourceManager 提交一个任务 jar包 ResourceManager 通过心跳机制连接获取NodeManager 资源的使用情况 Resou ...
- 地平线 旭日X3 SDB开发板 (四) yolov3自训练模型板上运行流程记录
文章目录 一.准备工作 二.检查模型 三.板上运行 四.参考 一.准备工作 onnx 1.5 Opset version 10 自己训练的darknet模型 yolov3 darknet 转 onnx ...
- 转载CSDN (MVC WebAPI 三层分布式框架开发)
前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理,是本文论述的重点.此外,插件技术的应用,富客户端JQ ...
- 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构(附源码)
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:zheng gitee ...
- 搜狗词库爬虫(2):基础爬虫框架的运行流程
系列目录: 搜狗词库爬虫(1):基础爬虫架构和爬取词库分类 项目Github地址:github.com/padluo/sogo- 各模块对应的内容如下: getCategory.py,提取词库分类ID ...
- 【Docker学习笔记 二】Docker安装、运行流程与常用命令
上一篇Blog详细介绍了Docker为什么会出现,是为了解决什么问题而出现:Docker的基本组成部分.架构.本篇Blog就来详细了解下Docker如何安装.卸载以及常用的操作命令有哪些.因为Dock ...
- MVC WebAPI 三层分布式框架开发
转载 CSDN (MVC WebAPI 三层分布式框架开发) 转者述:不深不浅,学习直接底部有源码! 前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层 ...
最新文章
- Python零碎知识(10):对日期时间的处理
- kafka集群操作指南
- 前端学习(2409):vs code自定义代码块
- python连接ftp服务器获取文件内容_python 访问ftp服务器文件
- linux集群的启动和停止,linux平台 spark standalone集群 使用 start-all,stop-all 管理集群的启动和退出...
- php 生成缩略图保存,PHP批量生成图片缩略图的方法
- nginx log 记录请求的头信息
- uygurqa输入法android,uygurqaapp输入法
- python抠图_Python实现抠图
- 金额要用BigDecimal,原理分析
- Derby 数据库内涵
- Elasticsearch浅尝搜索
- 揭露!华为HR实名控诉:不要相信HR,他们不诚信!
- 华为(huawei)园区网的常规部署配置示例
- Ubuntu16.04安装搜狗拼音
- java的反射机制~~!
- linuxprobe 正式开课
- 随着我国经济的持续快速发展,城市轻物流需求大幅增长
- 秒云助力中电科32所发布“基于拟态应用集成框架的SaaS云管理平台解决方案”
- Python for Data Analysis_2nd_Task 5 之 Pandas 进阶
热门文章
- Required type: android.support.v4.app.Fragment Provided: android.app.Fragment
- linux中删除文件的空行,Linux 删除文件中的空行
- PHP中traits是用来干嘛的?trait的语法,作用,特点。
- 高数 | 【极限】来 抓大头与抓小头
- 智能停车场系统的需求应用分析
- 【C++】之引用详解 什么是引用?
- 智能座舱如何实现稳定性和疲劳度测试
- 市场调研报告-全球与中国软件托管服务市场现状及未来发展趋势
- window7下利用DockerToolbox安装Docker
- 31个Python实战项目教你掌握图像处理,PDF开放下载