更新时间:08-03 上传会员:暖暖大将军
分类:工业大学 论文字数:16216 需要金币:1000个
摘要:随着互联网规模和应用的不断扩大,网络上每天产生的资源数量呈指数级增长。为了从这些多而杂的网络资源中快速、准确地检索到想要的信息,则需要使用高效的搜索引擎,而网络爬虫作为搜索引擎的基石,直接影响搜索引擎的性能。因此,本文基于golang设计并实现了一个高效的分布式爬虫系统。
本系统是基于golang语言、Elasticsearch实时检索和分析引擎、docker容器平台、Redis缓存数据库以及网络爬虫的基本原理,结合用户的实际需求,确定系统应该达到的总体要求以及各个模块应该达到的功能和性能要求,设计出分布式网络爬虫系统的架构。根据系统的需求和特性,分别实现了并发爬取解析功能、分布式持久化功能、基于cuckoo filter的去重功能、实时全文检索功能等。最后,在多次测试中,本系统都展示出来了良好的爬取效率和存储效率。
本文设计并实现的分布式网络爬虫系统,可以在一定程度上解决单机爬虫效率低、可扩展性差的弊端,提髙了网络爬虫采集信息、网页抓取数据的速度和质量。
关键词:分布式爬虫;搜索引擎;高并发;大数据
目 录
摘 要
ABSTRACT
第一章 绪论-1
1.1 研究背景-1
1.2 研究现状-1
1.3 研究内容-2
1.4 论文结构-2
第二章 相关技术-3
2.1 网络爬虫技术-3
2.1.1 什么是网络爬虫-3
2.1.2 网络爬虫的基本结构-3
2.1.3 分布式网络爬虫的原理和结构-4
2.2 搜索引擎-5
2.2.1 搜索引擎的原理-5
2.2.2 搜索引擎的工作流程-6
2.3 ElasticSearch-7
2.3.1分布式文件存储-7
2.3.2 分布式实时检索-7
2.4 相关算法-8
2.4.1 Consistent Hash 算法-8
2.4.2 Cuckoo Hashing 算法-8
2.5 本章小结-9
第三章 分布式网络爬虫系统分析-10
3.1 需求分析-10
3.1.1 系统功能模块图-10
3.1.2 系统功能模块需求分析-10
3.1.3 用户群体分析-11
3.2 可行性分析-11
3.2.1 经济可行性-11
3.2.2 技术可行性-11
3.2.3 社会可行性-12
3.3 本章小结-12
第四章 分布式网络爬虫设计-13
4.1分布式网络爬虫的架构设计-13
4.1.1 简单并发模式-13
4.1.2 任务队列并发模式-13
4.1.3 分布式爬虫系统的整体结构设计-14
4.2 分布式爬虫模块划分-16
4.3 分布式爬虫模块详细设计-16
4.3.1 网页爬取模块-16
4.3.2 数据解析模块-18
4.3.3 URL去重模块-19
4.3.4 持久化模块-19
4.3.5 数据渲染模块-19
4.4 本章小结-20
第五章 分布式网络爬虫的实现-21
5.1引擎模块实现-21
5.1.1引擎结构-21
5.1.2引擎运行的流程-22
5.2 爬取模块实现-23
5.3 解析模块实现-23
5.4 持久化模块实现-25
5.5 URL去重模块实现-27
5.6 分布式实现-28
5.6.1 序列化和反序列化-28
5.6.2 微服务化-28
5.7 前端模块实现-31
5.8 本章小结-32
第六章 系统测试-33
6.1测试环境搭建-33
6.2测试方案-34
6.2.1 单元测试方案-34
6.2.2 性能测试方案-34
6.3 测试用例及分析-35
6.3.1 单元测试分析-35
6.3.2 性能测试分析-37
6.4 URL去重优化比较测试-39
6.5 本章小结-40
第七章 总结和展望-41
7.1 总结-41
7.1.1研究成果-41
7.1.2系统优势与对比-41
7.2 未来工作展望-41
参考文献-42
致 谢-43