3.系统架构

3.1 技术选型

技术选型组件名称版本号描述
表现层框架SpringMVC(Pivotal)4.0.7高效稳定,是使用Servlet和jsp技术的一种MVC实现,帮助开发者控制web项目中的变化并提高专业化水平,减少开发者在运用MVC设计模式开发web应用的时间
逻辑层控制框架Spring(Pivotal)4.0.7提供事务管理、逻辑控制。框架的主要优势之一就是分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架
持久层框架Hibernate(RedHat)4.2.12持久层框架,对JDBC进行了非常轻量级的对象封装,使得JAVA程序员可以随心所欲的使用对象编程思维来操纵数据库。
分布式系统框架hadoop2.7.0hadoop可靠、高效、可伸缩的分布式框架
分布式计算平台spark2.1.0spark粗粒度数据并行计算范式,可以和hadoop无缝结合
流式处理平台kafka1.0.0kafka提供高吞吐量、高可靠性、持久性高、多样化的消费处理模型,用来解决百万级生产者和消费者之间数据传输问题。
实时计算开发语言scala2.11scala较java语法丰富,函数式变成体现更好,提高项目开发效率;scala具有spark原生代码优势;scala不会和java出现兼容性问题
数据采集脚本Nginx(OpenResty)1.8.0Nginx是一个高性能HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。其特点是占有内存少,并发能力强,而且nginx的并发能力确实在同类型的网页服务器中表现较好。
数据缓存队列脚本Lua(OpenResty)1.9.7.3OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

4.主要用例说明

4.1 数据管理

4.2 实时监控

4.3 数据可视化

4.4 策略管理

4.5 流程管理

4.6 规则管理

5.防爬规则

5.1 数据源

行程相关
出发地、目的地、出发时间、预定时间
出行人相关
身份信息(乘机人名、乘机人类型、乘机人证件类型、乘机人证件号)、出行人数
预定相关
购票人信息(登录ID、登录类型、操作IP、浏览器UA、手机设备信息)
联系人信息(联系人名、联系人手机号、联系人邮箱)
其他信息(销售单位)
机票防爬关键字段
bookuser 购票人ID,即登录ID,例如明珠会员卡号、非会员手机号等
bookip 购票人IP
psgname 乘机人名(用户敏感信息)
psgtype 乘机人类型,例如成人、儿童、婴儿
idtype 证件类型,例如身份证、护照、其他等
idcard 乘机人证件号(用户敏感信息)
contractname 联系人名(用户敏感信息)
contractphone 联系人手机号(用户敏感信息)
bookagent 销售单位
depcity/depairport 始发地
arrcity/arrairport 目的地
flightdate/deptime 起飞时间
cabin 舱位级别

5.2 防爬规则

按单次请求- UA中出现非浏览器字样
按IP地址聚合 - 任意X分钟内查询超过Y次
按IP地址聚合 - 连续X次查询时间间隔均小于Y秒
按IP地址聚合 - 任意X分钟内查询时间间隔的方差小于Y
按IP地址聚合 - 任意X分钟内,每分钟的查询频次的方差小于Y
按IP地址聚合 - 任意X分钟内,查询不同出发地超过Y处

5.3 规律

节假日、会员日、热门航线

5.4 作弊者特点

长期、重复爬取数据
使用多个代理(隔几分钟会自动切换UA、IP)爬取数据
每个IP短时间内爆发较高流量
每个IP 白天和夜晚的请求次数均衡
热门航线的更新频率较快
浏览器路径不完整

9.OpenResty概述

9.1 OpenResty开发环境搭建

1、下载OPenResty
可以在官方(https://openresty.org/cn/)下载
这里下载linux版本的openresty-1.13.6.1.tar.gz,将压缩包上传至slave1节点上的/opt/software
2、linux(cent6.5)安装OpenResrty
注意
OpenResty 依赖库有: perl 5.6.1+, libreadline, libpcre, libssl。所以我们需要先安装好这些依赖库
yum install -y readline-devel pcre-devel openssl-devel perl gcc
第一步:解压
tar -xzvf /opt/software/openresty-1.13.6.1.tar.gz -C /opt/apps/
第二步:配置
进入[hadoop@slave1 openresty]$目录中,然后输入命令配置
./configure --prefix=/opt/apps/openresty --with-http_stub_status_module
第三步:安装(编译)
make && make install

9.2 centos下安装lua

tar -zxvf /opt/software/lua-5.3.4.tar.gz -C /opt/apps/
[hadoop@slave1 apps]$ cd ./lua-5.3.4/
[hadoop@slave1 lua-5.3.4]$ make linux test
[hadoop@slave1 lua-5.3.4]$ make install
测试是否安装成功:
[hadoop@slave1 lua-5.3.4]$ lua -v
Lua 5.3.4 Copyright © 1994-2017 Lua.org, PUC-Rio
安装后进行启动:
cd openresty/nginx/sbin
./nginx

启动过程中可能遇到的问题:
在这里插入图片描述
提示上述错误信息,说明80端口被占用,需要进去[hadoop@slave1 conf]$ vi ./nginx.conf更改端口
在这里插入图片描述

Logo

开源、云原生的融合云平台

更多推荐