数据采集-服务器保护机制|学习笔记

简介: 快速学习数据采集-服务器保护机制

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop框架搭建):数据采集-服务器保护机制】学习笔记与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/670/detail/11618


数据采集-服务器保护机制

 

内容简介:

一、增加服务器保护机制功能

二、代码实现

 

一、增加服务器保护机制功能

1、思路分析

上节脚本虽然写完了,但是还稍微差一点,需要集群,现在虽然数据已经能够采集到数据,并且已经发送到后台,但是现在里面缺少一点内容-一个保护机制,打开脚本当中第一部分中写到缺少一个保护机制,到脚本当中来看,里面是直接就导入,然后开始准备采集数据,这有什么问题?

现在假设一个官网:

去哪儿携程东方,它们在采集数据时,服务器的处理能力是有限的,假设这个服务器里面最多只能允许1050个用户来同时访问,最多只能允许1050个人同时在线,那如果当前活跃的用户已经连接用户已经达到1000了,系统马上就崩溃了,对于用户普通查询已经有了很大的性能影响时,这种时候不采集数据,这时候正常用户的查询服务都已经很困难了,就不需要采集数据了,所以要在其里面加一个保护机制,假如当最大能够接受的用户数是1050个,这时肯定不能到1050停止,再假设能接受的最大限度是1000,如果当前活跃的用户连接数小于1000时采集数据,大于1000时就停止采集数据这种时候系统正常运行都已经成问题根本没有必要再去采集数据,所以一个保护机制。

2、增加保护机制代码

这个保护机制是什么?这时要加一个判断,要查当前活跃用户连接数是多少,然后与设置的阈值的关系,假设这里设置1050是最上限,而最高的让查1000个用户,其中1000就是预知要去判断当前活跃用户数与阈值的大小关系,活跃用户连接数小于1000时,才让采集数据;如果大于1000,就不采集数据了。

怎么做功能?打开脚本,输入以下代码:

--开启服务器的保护机制(当前活跃用户连接数小于1000时采集数据,大于1000就不采集数据)

--最大的用户数阈值

local maxUserNumber=1000

--获取当前活跃用户连接数

local activeUserNumber=ngx.var.connections_active

3、保护机制代码说明

首先定义一个当前活跃用户连接数的阈值,其中默认声明了一个本地的 maxUserNumber 最大是1000个,然后接下来再获取当前活跃的用户连接数,那么当前活跃用户是怎么获取的,首先定义一下,这里 activeUserNumber 就是定义当前变量,通过 ngx 来进行获取,这里 ngx 里面提供一个方法,这个方法返回的结果就是此时此刻已经连接的用户连接数,无需自己去计算,它自己返回的结果就是 ngx.var.connections_active ,以上就是获取当前活跃用户的连接数。

4、判断功能

获取完成之后开始比较大小,如果当前活跃用户人数小于1000,再去进行处理(即再去进行采集)如果大于1000就不采集了,代码如下:

if activeUserNumber<maxUserNumber

then

如果当前的 activeUserNumber (活跃用户连接数)小于 maxUserNumber (最大的用户连接数)时,再进行采集,那么 then 是直接就可以拉到最后的,例如900“,900是小于1000,小1000就需要去采集,否则如果大于1000就不采集有 then 就有 end ,end 放入代码的最后一部分,其中 end 是结束,开始在 then 这里,这就是上述代码。在上文代码中 maxUserNumber 是一个 number 类型,所以为了保险把它们都做一个 tonumber 形式,

如下所示:

if tonumber(activeUserNumber)<tonumber(maxUserNumber)

then

 

二、代码实现

这样保护机制就做完了:如果当前活跃用户连接小于1000就采集,大于1000便预示马上到峰值了,于是采用了一个保护机制,而且当前活跃用户连接,在后面的程序开发时也是必须要用到的,所以在此一举两得把它做出来,将以上代码进行保存,保存完成之后再把它进行上传,在此之前输入 rm-rf 把上节脚本中的内容进行删除,删除之后再把它上传到集群里面,上传完成之后重启 nginx ,

代码显示如下:

image.png

可以看到上述代码中并没有报错,然后再回到之前的窗口中去刷界面,这个没有效果可看,如果数据正常打进来,就说明刚才写的内容是没有错的,如果打不进去再解决问题,页面刷新之后可以看到数据是可以正常打进来的,

如下图所示:

image.png

就表明添加保护机制逻辑是没有问题的,到现在数据采集的脚本代码就彻底的结束了。

相关文章
|
6月前
|
缓存 网络协议 Linux
Linux C/C++ 开发(学习笔记十三):百万并发的服务器实现
Linux C/C++ 开发(学习笔记十三):百万并发的服务器实现
103 0
|
6月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
116 0
|
6月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
132 0
|
3月前
|
缓存 应用服务中间件 nginx
Web服务器的缓存机制与内容分发网络(CDN)
【8月更文第28天】随着互联网应用的发展,用户对网站响应速度的要求越来越高。为了提升用户体验,Web服务器通常会采用多种技术手段来优化页面加载速度,其中最重要的两种技术就是缓存机制和内容分发网络(CDN)。本文将深入探讨这两种技术的工作原理及其实现方法,并通过具体的代码示例加以说明。
334 1
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
130 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
135 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
1月前
|
Python
Flask学习笔记(二):基于Flask框架上传图片到服务器端并原名保存
关于如何使用Flask框架上传图片到服务器端并以其原名保存的教程。
75 1
|
1月前
|
Python
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
这篇博客文章是关于如何使用Flask框架上传特征值数据到服务器端,并将其保存为txt文件的教程。
31 0
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
|
1月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
39 1
|
4月前
|
缓存 应用服务中间件 Apache
缓存代理服务器的实现机制和技术选型
缓存代理服务器是一种特殊的代理服务器,其主要功能是缓存从目标服务器(通常是Web服务器)获取的数据,并在客户端再次请求相同数据时直接提供缓存的数据。通过缓存代理服务器可以加快访问速度并减轻目标服务器的负载。