转深入学习heritrix---体系结构(Overview of the crawler)
Heritrix采用了模块化的设计,它由一些核心类(core classes)和可插件模块(pluggable modules)构成。
核心类可以配置,但不能被覆盖,插件模块可以被由第三方模块取代。
(一)heritrix的体系结构图:
(二)架构分析
CrawlController(下载控制器)
整个下载过程的总的控制者,整个抓取工作的起点,决定整个抓取任务的开始和结束。从Frontier获取URI,传递给
线程池(ToePool)中的ToeThread处理。
Frointier(边界控制器)
主要确定下一个将被处理的URI,负责访问的均衡处理,避免对某一web服务器造成太大的压力。
它保存着crawl的状态:
(1)发现的URI(URIs have been discovered)
(2)正在被处理的URI(URIs are being processed (fetched))
(3)已经处理的URI(URIs have been processed)
TeoThread(处理线程)
Heritrix是多线程的,每一个URI被一个ToeThread处理。
Processor(处理器)
下图为处理器的整个结构图
许多Processor组成一个处理链(processor chains)中,每一个处理链对URI进行一系列的处理。
(1)Pre-fetch processing chain(预处理链)
主要根据robot协议,DNS以及下载范围控制信息判断当前URI是否应当处理。
(2)Fetch processing chain(抓取处理链)
从远程服务器获取数据
(3) Extractor processing chain(抽取处理链)
从网页中抽取新的URI
(4)Write/index processing chain(写处理链)
负责把数据写入本地磁盘
(5)Post-processing chain(后置处理链)
由CrawlStateUpdater,LinksScoper,FrontierScheduler构成。
主要参考:Heritrix文档
转深入学习heritrix---体系结构(Overview of the crawler)的更多相关文章
- Android开发学习——android体系结构
Android的体系结构采用了分层架构的思想, 从上层到底层共包括四层,分别是应用程序程序层.应用框架层.系统库和Android运行时和Linux内核. 一 应用程序层 该层提供一些核心应用程序包,例 ...
- ORACLE数据库学习之体系结构
Oracle体系结构 ORACLE数据库体系结构决定了oracle如何使用网络.磁盘和内存.包括实例(instance),文件(file)和进程(process不包括后台进程)三部分. 实例:每 ...
- 深度学习之概述(Overview)
2016年被称为人工智能的元年,2017年是人能智能应用的元年:深度学习技术和应用取得飞速发展:深度学习在互联网教育场景也得到广泛应用.本文主要介绍机器学习及深度学习之定义及基本概念.相关网络结构等. ...
- 对Spark2.2.0文档的学习1-Cluster Mode Overview
Cluster Mode Overview Link:http://spark.apache.org/docs/2.2.0/cluster-overview.html Spark应用(Applicat ...
- MySQl学习-——Mysql体系结构与Mysql存储引擎
Mysql体系结构与Mysql存储引擎 Mysql体系结构 mysql体系结构图:
- [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)
译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...
- Java基础学习-Collection体系结构和迭代测试
package Collection; import java.util.ArrayList; import java.util.Collection; import java.util.Iterat ...
- Adaptive AUTOSAR 学习笔记 1 - Overview
缩写 AP: AUTOSAR Adaptive Platform CP: AUTOSAR Classic Platform AA: Adaptive Application ARA: AUTOSAR ...
- Oracle 课程一之Oracle体系结构
课程目标 •理解ORACLE数据库体系架构—内存结构和进程 •理解SQL在数据库中的运作流程 •理解UNDO&REDO原理 •理解commit原理 1.Oracle数据库概述 •数据库:物 ...
随机推荐
- ESASP 业界第一个最为完善的 ASP MVC框架(待续)
EchoSong 疯狂了,竟然整ASP框架. ASP就是抛弃的孩子,没人养没人疼的, 智力.四肢不全.何谈框架?? 很多ASP的前辈们要么放弃ASP 投入 ASP.net 或者 PHP怀抱.要么直接用 ...
- 【BZOJ1878】[SDOI2009]HH的项链 离线BIT
1878: [SDOI2009]HH的项链 Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义 ...
- python--httplib模块使用
httplib是一个相对底层的http请求模块,其上有专门的包装模块,如urllib内建模块,goto等第三方模块,但是封装的越高就越不灵 活,比如urllib模块里请求错误时就不会返回结果页的内容, ...
- java编译错误:varargs 方法的非 varargs 调用
转自:http://www.blogjava.net/ideame/archive/2007/03/23/105849.html 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 ...
- lintcode:单词切分
单词切分 给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词. 样例 s = "lintcode" dict = ["lint&qu ...
- 2016网易实习生编程题:n个骰子的和等于m
题目 骰子的点数是1 到 6,当有n个骰子的时候,其点数和等于m的数量 如当n = 4 m = 23时候 有下面四种: 5666656666566665 解题 深度优先,开始第一感觉很复杂,然后就没有 ...
- 计算机学院2014年“新生杯”ACM程序设计大赛
1440: 棋盘摆车问题 对于输入n,k: 1.当n<k时,无满足的摆法 2.否则 第一个车可以排n*n个位置(即整个棋盘),第二个可排(n-1)*(n-1)个位置,…… 正如排列组合一样,车与 ...
- MyBatis笔记——初次环境配置
简单介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBati ...
- Sqlstate解释
本篇文章主要介绍了"Sqlstate详解",主要涉及到方面的内容,对于DB2感兴趣的同学可以参考一下: 根据 X/Open 和 SQL Access Group SQL CAE 规 ...
- Data Flow ->> Look up & Merge Join
Look up: Look up组件做的事情和SQL SERVER中的inner和outer hash join差不多. 但是look up每次只能有两张表参与. 在FULL-CACHE模式下,两个s ...