开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第一阶段:系统架构+技术选型+用例说明】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/669/detail/11589
系统架构+技术选型+用例说明
内容介绍
一、系统架构
二、技术选型
三、用例说明
一、系统架构:反爬虫项目的总体技术架构
系统的设计方法是采用面向对象的设计。本系统前端页面交互主要采用 B/S 的结构,采用 MVC 及流式数据的设计思路进行规划设计。
数据采集使用 nginx 采集脚本,并使用 sparkstreaming 进行数据流清洗,使用 nginx[lua]+kafka+sparkstreaming+spark 架构。
1.设计策略:
(1). Web 端的架构才用得上B/S
(2).数据处理采用的是
nginx[lua]+kafka+sparkstreaming+spark
二、技术选型
1.Web 端:ssh(4以上)反爬虫项目中不需要写出代码。
2.数据处理:
hadoop 2.7 Kafka 0.10.1 Spark 2.1 scala 2.11.5 nginx+lua 1.8以上。
技术选型 |
组件名称 |
版本号 |
描述 |
表现层框架 |
SpringMVC (Pivotal) |
4.0.7 |
表现层 MNC 框架,易于上手,高效稳定,是使用 Servlet 和JSP 技术的一种 MVC 实现,可帮助开发者控制 WEB 项目中的变化并提高专业化水平,减少开发者在运用 MVC 设计模式开发 WEB 应用的时间。 |
逻辑控制框架 |
Spring (Pivotal) |
4.0.7 |
提供事务管理、逻辑控制等功能,框架的主要优势之就是其分层架构,分层架构允许使用者选择使用哪一个组件, 同时为J2EE 应用程序开发提供集成的框架。 |
持久层框架 |
Hibernate (Red Hat) |
4.2.12 |
持久层框架,对 JDBC 进行了非常轻量级的对象封装,使得JAVA 程序员可以随心所欲的使用对象编程思维来操纵数据库。 |
分布式系统架构 |
Hadoop |
2.7.0 |
Hadoop 是以-种可 靠、高效、可伸缩的方式对大量数据进行分布式处理的软件框架。它适用于任何规模的非结构化数据.并具有极强的容错能力。 |
分布式计算平台 |
Spark |
2.1.0 |
Spark 是一种粗粒度数据并行(data parale) 的计算范式,同时 Spark 与 Hadoop 可以无缝结合,并且在保证容错的前提下.用内存来承载工作集,极大的提升了运算速度。 |
流式处理平台 |
Kafka |
0.10.1 |
Kafka 是一个完整的系统,它提供了一个高吞吐量、高可靠性、持久性高以及多样化的消费处理模型,可以用来解决百万级别的数据中生产者与消费者之间的数据传输问题。 |
实时计算开发语言 |
Scala (EPFL) |
2.11 |
(1) Scala 较 Java 语法更丰富,函数式编程方式使代码量比 Java 减少至少一个数量级。因此,使用 Scala 能提高项目开发效率。 |
数据采集脚本 |
Nginx (OpenResty) |
1.8.0 |
Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器。其特点是占有内存少,并发能力强,而且 nginx 的并发能力确实在同类型的网页服务器中表现较好。 |
数据缓存队列脚本 |
Lua (OpenResty) |
1.9.7.3 |
OpenResty 是基于一个 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便的搭建能够处理超高开发、扩展性能极高的动态 Web 应用、 Web 服务和动态网关。 |
三、用例说明
1.数据管理:
脚本开关中会设置阈值,决定后续功能的开关。
2.实时监控
3. 数据可视化
4. 策略管理
在识别爬虫时,需要依照规则对数据打分,得到最后的分数,将其与配置好的阈值对比,得出结论。
5. 流程管理
6. 规则管理
防爬规则:
(1)单位时间内的 IP 段访问量(前两位)
(2)基于 IP 的统计
(3)单位时间内的访问总量
(4)单位时间内的关键页面访问总量
(5)单位时间内的 UA 出现次数统计
(6)单位时间内的关键页面最短访问间隔
(7)单位时间内小于最短访问间隔(自设)的关键页面查询次数
(8)单位时间内关键页面的访问次数的 Cookie 数少于 X (自设)
(9)单位时间内查询不同行程的次数