开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第一阶段:Openresty 架构介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/669/detail/11595
OpenResty 架构介绍
内容介绍:
一、负载均衡
二、单机闭环(测试环境)
三、分布式闭环
四、接入网关
五、注意
目标:了解 Openresty 的常用架构
一、负载均衡
1.组成部分:
LVS+HAPraxy
LVS(Linux Virtual Servar)的简写,意即 Linux 虚拟服务器
2.负载均衡实现原理:
LVS+HAPraxy 将海量转发给核心 NgInx 1 和核心 NgInx 2 ,即实现了流量的负载均衡。
3.实例及优势
以某宝为例,将业务进行划分,假设有一个首页面 Nginx,一个电脑类的单品页 Nginx1 服务器,一个洗发水类的单品页 Nginx2 服务器,还有一个结算 Nginx 服务器。他们都有一个独立的 Nginx 服务器,他们上面要部署一个 LVS+HAPraxy ,建立两个核心的 Nginx 。
当用户请求发送到核心 Nginx 1 或者核心 Nginx 2 中,如果只有一个核心 Nginx ,则所有用户请求都发送到一个核心 Nginx 中,会造成核心 Nginx 非常忙碌。
所以在虚拟服务器中加入 HAPraxy ,可以把数据分给核心 Nginx 1 或者核心Nginx 2,这样的方案就不仅可以发挥 HAPraxy 本身的作用,还可以减轻一个核心 Nginx 的压力,减轻了一个核心 Nginx 的负载,并且两个核心的 Nginx 进行服务,效率更高。
同时如果其中一个核心 Nginx 当机,那么另外一个可以接管所有的任务。
二、单机闭环(测试环境)
1.概念
在一个 nginx 中将数据和业务进行了隔离,不和别的 nginx 和数据库进行交互。所有想要的数据都能从本服务器直接获取,在大多数时候无法通过网络去其他服务器获取。
下图三个服务器都部署了 Nginx 应用和安装了 Lua 程序,采集应用数据后都储存在本地,且三个节点完全物理隔离。
所以服务器192.168.1.2部署的 Nginx 应用和 Lua 程序,存储的数据足够本服务器计算分析,但是如果要用到其他服务器的数据是不被允许的。
2.单机闭环会遇到如下两个主要问题:
(1)数据不一致问题(比如没有采用主从架构,导致不同服务器数据不一致)﹔
(2)遇到存储瓶颈(磁盘或者内存遇到了天花板)。
3.解决方法
解决数据不一致的比较好的办法是采用主从或者分布式集中储存;而遇到存储瓶颈就需要进行按照业务键进行分片,将数据分散到多台服务器。
三、分布式闭环
1.作用
分布式闭环解决了单机闭环的两个瓶颈问题,将数据库进行集群或者主从操作,将 nginx 做成集群。
如下图,将三个节点不存储在本地,而是存储在同一个分布式集群中,所以这三个服务器的数据可以交互的,这样解决了单机闭环的第一个问题。
因为底层使用一个分布式稳定系统,分布式稳定系统可以添加节点,扩展磁盘,这样就解决了单机闭环的第二个问题。
四、接入网关
将 nginx 作为流量入口,后面接入 tomcat 集群。
1.优点
上层利用负载均衡的思路,加入两个核心 Nginx 服务器,在每一个业务层配置独立的业务 Nginx 。
底层的数据存储利用分析都利用集群, Redis 集群、 Tomcat 集群和分布式存储集群。
即解决了负载均衡的问题,又解决了高可用的问题,并且解决了数据不一致和存储瓶颈的问题。
五、注意
在反爬虫项目中,用单机闭环,因为主要目的是采集数据然后在内部实现计算而不是深入的研究架构。但是在企业中的实际环境不是单机闭环。