开源通用爬虫框架YayCrawler-框架的运行机制
这一节我将向大家介绍一下YayCrawler的运行机制,首先允许我上一张图:

首先各个组件的启动顺序建议是Master、Worker、Admin,其实不按这个顺序也没关系,我们为了讲解方便假定是这个启动顺序。
一、Master端分析
Master启动后会连接Redis查询任务队列状态,Master维持了四个状态的任务队列:待执行任务队列、执行中任务队列、成功任务队列和失败任务队列。Master内部有一个任务调度器,Master等Worker心跳包到来的时候,观察Worker是否还有任务分配的余地(每个Worker可以设置自己本地的任务队列的长度),如果Worker还能接收n个任务,任务调度器就会从待执行任务队列中取至多n个任务分配给该Worker。分配成功后,Master会把这n个任务从待执行队列移到执行中队列。

Master会定期扫描已注册的Worker,如果某个Worker的上次心跳时间距离了现在已经超过了2倍Worker自身的心跳间隔,那么Master会认为此Worker已经失联,不能再给它分配任务,因此会把它从已注册列表移除。

Master会定期扫描执行中队列,如果发现某个任务的分配时间距离现在已经超过了某个预设值,我们可以认为这个任务出现了差错,应该重新执行一遍,因此Master会重新把这个任务从执行中队列移到待执行队列,以便再次分配执行。
二、Worker端分析
Worker的配置文件里面配置了Master的服务通信地址,Worker启动的时候就会通过这个地址向Master注册,注册的信息包括Worker的通信地址、心跳间隔、任务配额等。Worker注册成功后会定期向Master发送心跳,向Master汇报自己的状态的同时领取任务。


三、Admin端分析
Admin端主要是为用户提供一个操作的接口界面,这是一个Web工程,Admin端的配置文件里面也记录了Master的服务通信地址。用户在Admin端可以针对目标网页编写抽取规则,测试规则,直到保存到数据库。用户可以在界面上查看任务的执行情况,比如成功的任务,失败的任务,任务的结果等;用户也可以在界面上单个或批量发布普通任务/定时任务,这些任务最终会在Worker上执行,Worker在解析的时候会参考用户设置的解析规则。
四、其他
Master、Worker和Admin三者之间的通信是基于http协议的,为了安全,通信过程中都使用了token, timestamp, nonce来对消息体进行签名并验证,只有签名正确才能通信成功。
框架中的队列、持久化方式都是基于接口编程的,您可以很方便的用自己的实现来替换原有的处理。
开源通用爬虫框架YayCrawler-框架的运行机制的更多相关文章
- 开源通用爬虫框架YayCrawler-开篇
各位好!从今天起,我将用几个篇幅的文字向大家介绍一下我的一个开源作品--YayCrawler,其在GitHub上的网址是:https://github.com/liushuishang/YayCraw ...
- 开源通用爬虫框架YayCrawler-运行与调试
本节我将向大家介绍如何运行与调试YayCrawler.该框架是采用SpringBoot开发的,所以可以通过java –jar xxxx.jar的方式运行,也可以部署在tomcat等容器中运行. 首先 ...
- 01_日志采集框架Flume简介及其运行机制
离线辅助系统概览: 1.概述: 在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集.结果数据导出. 任务调度等不可或缺的辅助系统,而这些辅助 ...
- 开源通用爬虫框架YayCrawler-页面的抽取规则定义
本节我将向大家介绍一下YayCrawler的核心-页面的抽取规则定义,这也是YayCrawler能够做到通用的主要原因之一.如果我要爬去不同的网站的数据,尽管他们的网站采用的开发技术不同.页面的结构不 ...
- php CI框架目录结构及运行机制
CI目录结构 CI主要组成部分为,application(应用文件夹).system(系统文件夹)和index.php入口文件. 应用文件夹中主要是存放控制器.模型和视图等,系统文件夹中主 ...
- 爬虫框架YayCrawler
爬虫框架YayCrawler 各位好!从今天起,我将用几个篇幅的文字向大家介绍一下我的一个开源作品——YayCrawler,其在GitHub上的网址是:https://github.com/liush ...
- 爬虫(十八):Scrapy框架(五) Scrapy通用爬虫
1. Scrapy通用爬虫 通过Scrapy,我们可以轻松地完成一个站点爬虫的编写.但如果抓取的站点量非常大,比如爬取各大媒体的新闻信息,多个Spider则可能包含很多重复代码. 如果我们将各个站点的 ...
- 【转】Python爬虫(6)_scrapy框架
官网链接:https://docs.scrapy.org/en/latest/topics/architecture.html 性能相关 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下 ...
- 爬虫之scrapy框架
解析 Scrapy解释 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓 ...
随机推荐
- 【原创】Linux常用命令记录
1. 查看网络状态分布 #!/bin/sh netstat -apn >/dev/ \ | awk 'BEGIN {printf("%-15s%-15s%-15s%-15s\n&quo ...
- redis类与用法
<?phpnamespace app\common\model; class Cache { public $redis = null; public function __construct( ...
- win10下SVN图标不显示
win10系统的SVN图标不现实了.正常情况下,会在文件夹上有一个对勾 但是对勾以及所有的SVN图标都突然消失了,都不知道文件什么状态了. 经过一通搜索,发现问题所在(都指向注册表图标被占用).原因就 ...
- Web应用程序使用说明
目录 Web应用程序使用说明 1.组织权限概述 a)概述 b)组织权限设置 2.门户的使用 门户-栏目门户配置 3.安全策略功能使用说明 一.概述 二.安全策略设置 Web应用程序使用说明 1. ...
- ethereum/EIPs-155 Simple replay attack protection 35,36
EIP 155:重放攻击保护——防止了在一个以太坊链上的交易被重复广播到另外一条链. 在看椭圆曲线时有提到,与r.s.v中的v相关 不同的共有链定义不同的chainId, 防止同一笔交易在不同的共有链 ...
- 在CentOS7服务器端启动jupyter notebook服务,在windows端使用jupyter notebook,服务器充当后台计算云端
在CentOS7服务器端启动jupyter notebook服务,在windows端使用jupyter notebook,服务器充当后台计算云端 在服务器端启动jupyter notebook服务,在 ...
- BZOJ2125 最短路 圆方树、倍增
传送门 对仙人掌建立圆方树,然后对边定权 对于圆点和圆点之间的边,是原来仙人掌上的桥,边权保持不变 对于圆点和方点之间的边,将圆方树看做以一个圆点为根的有根树之后,一个方点的父亲一定是一个圆点.对于这 ...
- POJ1275 Cashier Employment 二分、差分约束
传送门 题意太长 为了叙述方便,将题意中的$0$点看作$1$点,$23$点看做$24$点 考虑二分答案(其实从小到大枚举也是可以的) 设$x_i$是我们选的雇员第$i$小时开始工作的人数,$s_i$是 ...
- CYJian的水题大赛
实在没忍住就去打比赛了然后一耗就是一天 最后Rank19还是挺好的(要不是乐多赛不然炸飞),这是唯一一套在Luogu上号称水题大赛的而实际上真的是水题大赛的比赛 好了我们开始看题 T1 八百标兵奔北坡 ...
- Luogu P2261 [CQOI2007]余数求和
最近中考放假几天都在怼一道BJOI2018的水题,但卡死在90pts跑不动啊! 然后今天发现终于过了然而Hack的数据全RE了然后就开始找新的题目来找回信心. 然后发现智能推荐里有这道题,然后想了1m ...