系统架构+技术选型+用例说明|学习笔记

简介: 快速学习系统架构+技术选型+用例说明

开发者学堂课程【大数据实战项目:反爬虫系统(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 能提高项目开发效率。
(2) Spark 源代码Scala 开发,Scala 具有原生语言的先天优势。各种特性 Scala 最先支持,尤其在 Spark 开发排查异常时,对 Spark 源码熟悉,将有更大优势,从而降低项目开发的风险。
(3) Scala  lava 都基于 JM 运行,二者最终都编译成 class 文件,使用 scala 能随意调用 Java  实现的类和方法。因此,Sala  Java 的混合编程方式不会有兼容性问题,又能充分利用两者的优点。目前行业内此种做法也较流行。

数据采集脚本

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.数据管理:

脚本开关中会设置阈值,决定后续功能的开关。

图片1.png

2.实时监控

图片2.png

3. 数据可视化

 图片3.png

4. 策略管理

在识别爬虫时,需要依照规则对数据打分,得到最后的分数,将其与配置好的阈值对比,得出结论。

图片4.png

5. 流程管理

图片5.png

6. 规则管理

防爬规则:

(1)单位时间内的 IP 段访问量(前两位)

(2)基于 IP 的统计

(3)单位时间内的访问总量

(4)单位时间内的关键页面访问总量

(5)单位时间内的 UA 出现次数统计

(6)单位时间内的关键页面最短访问间隔

(7)单位时间内小于最短访问间隔(自设)的关键页面查询次数  

(8)单位时间内关键页面的访问次数的 Cookie 数少于 X (自设)

(9)单位时间内查询不同行程的次数

相关文章
|
7月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
169 0
|
7月前
|
Java Docker 容器
美团大牛精心整理SpringBoot学习笔记,从Web入门到系统架构
近期慢慢复工,为了准备面试,各路码友们都开始磨拳擦脚,背面试题、知识点。小编最近得一良友赠送了一份关于SpringBoot的学习笔记,简直不要好用,理论解析言简意赅,每一步操作都有图片展示。这么好的东西肯定不能私藏,为了感谢大家在2019年里的支持,我现在将这份笔记赠送给大家,祝大家前程似锦,Offer不断!
|
7月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
293 0
|
4月前
|
SQL 分布式计算 大数据
Android项目架构设计问题之平衡技术选型与业务需求之间的关系如何解决
Android项目架构设计问题之平衡技术选型与业务需求之间的关系如何解决
60 0
|
7月前
|
架构师 网络协议 算法
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
|
6月前
|
Java 数据安全/隐私保护
JavaSE——基础小项目-模拟ATM系统(项目主要目标、技术选型、架构搭建、具体实现、完整代码注释)(二)
JavaSE——基础小项目-模拟ATM系统(项目主要目标、技术选型、架构搭建、具体实现、完整代码注释)(二)
172 0
|
6月前
|
Java API 数据安全/隐私保护
JavaSE——基础小项目-模拟ATM系统(项目主要目标、技术选型、架构搭建、具体实现、完整代码注释)(一)
JavaSE——基础小项目-模拟ATM系统(项目主要目标、技术选型、架构搭建、具体实现、完整代码注释)(一)
131 0
|
7月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
174 1
|
7月前
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
154 1
|
7月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
107 1