请画出一个抓虫系统的架构图并说明你的爬虫需要如何优化来提升性能
2015-03-29 12:17
776 查看
该题目来自阿里2014年秋季校园招聘《系统工程师》笔试题的附加题。
原题目为:
3.搜索引擎是很常用的web应用。大部分搜索引擎需要设计一个抓虫(Crawler),从很多网站抓去网页,分析数据,供搜索引擎使用。
设想你来做一个搜索引擎的爬虫,需要抓去约一百万家网站的网页内容。
1) 请画出一个抓虫系统的架构图。2) 重点说明你的爬虫需要如何优化来提升性能。
查阅相关资料,做出以下解答:
爬宠系统大致分为以下几个部分,分别为:
爬虫模块:阶段性地抓取互联网上的内容
存储模块:存储爬虫下载下来的网页,是分布式的和可扩展的存储系统
解析模块:提取文本和网页的链接集合。
URL管理模块:重复消除模块决定一个解析出来的链接是否已经在URLFrontier或者最近下载过
索引模块:将抓取到的信息经过优化,建立索引
任务队列(URL集):需要爬取得网页列表
DNS模块:解析模块根据给定的URL决定从哪个Web服务器获取网页
可以优化的地方:
爬虫模块并行
DNS缓冲
文本解析去重
建立索引时可以优化
URL去重也可能有优化算法
原题目为:
3.搜索引擎是很常用的web应用。大部分搜索引擎需要设计一个抓虫(Crawler),从很多网站抓去网页,分析数据,供搜索引擎使用。
设想你来做一个搜索引擎的爬虫,需要抓去约一百万家网站的网页内容。
1) 请画出一个抓虫系统的架构图。2) 重点说明你的爬虫需要如何优化来提升性能。
查阅相关资料,做出以下解答:
爬宠系统大致分为以下几个部分,分别为:
爬虫模块:阶段性地抓取互联网上的内容
存储模块:存储爬虫下载下来的网页,是分布式的和可扩展的存储系统
解析模块:提取文本和网页的链接集合。
URL管理模块:重复消除模块决定一个解析出来的链接是否已经在URLFrontier或者最近下载过
索引模块:将抓取到的信息经过优化,建立索引
任务队列(URL集):需要爬取得网页列表
DNS模块:解析模块根据给定的URL决定从哪个Web服务器获取网页
可以优化的地方:
爬虫模块并行
DNS缓冲
文本解析去重
建立索引时可以优化
URL去重也可能有优化算法
相关文章推荐
- 一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率,才能提高整个应用程序
- 不谈架构,看看如何从代码层面优化系统性能!
- 如何构建一个ERP系统(需求分析、系统架构、系统设计、系统编码、测试、交付程序及文文件)。
- 从LiveJournal后台发展看 大型网站系统架构以及性能优化方法
- 高性能网站性能优化与系统架构
- 如何提升服务器系统性能(转)
- 高性能网站性能优化与系统架构(ZT)
- 从LiveJournal后台发展看 大型网站系统架构以及性能优化方法
- 如何用队列提升系统性能
- 如何提升服务器系统性能
- C#提升性能"数据库连接打开与关闭"经验分享(附:优化过的DBHelper类) 之配餐系统的开发
- 高性能网站性能优化与系统架构(ZT)
- 从LiveJournal后台发展看 大型网站系统架构以及性能优化方法
- 网站性能优化与系统架构
- 高性能网站性能优化与系统架构
- 设计一个图书借阅管理系统需要如何分析
- 大型网站系统架构以及性能优化方法
- C#提升性能"数据库连接打开与关闭"经验分享(附:优化过的DBHelper类) 之配餐系统的开发
- 在使用Hibernate时,因为一个查询需要更多的表连接而要使用SQL来解决性能问题。然而返回的结果集中包含了没有映射的Entity类中的表字段,在这个SQL中还有使用如何将层次关系的父子结点显示为横行
- 高性能网站性能优化与系统架构(ZT)