一种基于Nginx服务器的实时流量控制方法及系统转让专利

申请号 : CN201710130843.7

文献号 : CN106911582B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 牟璇潘贵国于江磊綦相彭成海星

申请人 : 北京搜狐新媒体信息技术有限公司

摘要 :

本发明公开了一种一种基于Nginx服务器的实时流量控制方法,包括:获取访问新闻客户端的总速率;判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;基于第一控制信号限制访问新闻客户端的总速率本发明能够有效的对流量进行实时的监控。本发明还公开了一种基于Nginx服务器的实时流量控制系统。

权利要求 :

1.一种基于Nginx服务器的实时流量控制方法,其特征在于,包括:获取访问新闻客户端的总速率;

判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;

当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;

基于所述第一控制信号限制访问新闻客户端的总速率;

还包括:

每间隔n分钟,从Nginx服务器中分别获取IP地址和每个用户访问业务的历史数据;

对时间区间[now_ts–interval,now_ts]的历史数据进行拟合,得到拟合函数f(x),判断f(x)在区间[now_ts–interval,now_ts]的斜率θ,若θ小于θmin,则停止,若否则:计算 的值,即区间[now_ts–interval,now_ts]的中值,若大于每个网络协议的访问速率预设阈值或每个用户访问业务的速率的预设阈值,通过基于Nginx服务器与脚本语言的网页平台发送超文本传输协议请求设置IP地址的访问速率预设阈值或每个用户访问业务的速率的预设阈值;所述网络协议为IP协议;

所述方法还包括:

获取IP地址的访问速率;

判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值;

当获取到的IP地址的访问速率大于IP地址的访问速率预设阈值时,生成第二控制信号;

基于所述第二控制信号限制IP地址的访问速率;

所述方法还包括:

获取每个业务的速率;判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值;

当获取到的每个业务的速率大于每个业务的速率的预设阈值时,生成第三控制信号;

基于所述第三控制信号限制每个业务的速率;

所述方法还包括:

获取每个用户访问业务的速率;

判断获取到的每个用户访问业务的速率是否大于每个用户访问业务的速率的预设阈值;

当获取到的每个用户访问业务的速率大于每个用户访问业务的速率的预设阈值时,生成第四控制信号;

基于所述第四控制信号限制每个用户访问业务的速率。

2.一种基于Nginx服务器的实时流量控制系统,其特征在于,包括:基于Nginx服务器的实时流量监控模块,用于获取访问新闻客户端的总速率;

动态实时流量控制模块,用于判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;

当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;

基于所述第一控制信号限制访问新闻客户端的总速率;

所述实时流量监控模块,还用于每间隔n分钟,从Nginx服务器中分别获取IP地址和每个用户访问业务的历史数据;

所述动态实时流量控制模块,还用于对时间区间[now_ts–interval,now_ts]的历史数据进行拟合,得到拟合函数f(x),判断f(x)在区间[now_ts–interval,now_ts]的斜率θ;若θ大于等于于θmin时,计算 的值,即区间[now_ts–interval,now_ts]的中值,若 大于每个网络协议的访问速率预设阈值或每个用户访问业务的速率的预设阈值,通过基于Nginx服务器与脚本语言的网页平台发送超文本传输协议请求设置每个网络协议的访问速率预设阈值或每个用户访问业务的速率的预设阈值;

所述网络协议为IP协议;

所述基于Nginx服务器的实时流量监控模块,还用于获取IP地址的访问速率;

所述动态实时流量控制模块,还用于判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值;

当获取到的IP地址的访问速率大于IP地址的访问速率预设阈值时,生成第二控制信号;

基于所述第二控制信号限制IP地址的访问速率;

所述基于Nginx服务器的实时流量监控模块,还用于获取每个业务的速率;

所述动态实时流量控制模块,还用于判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值;

当获取到的每个业务的速率大于每个业务的速率的预设阈值时,生成第三控制信号;

基于所述第三控制信号限制每个业务的速率;

所述基于Nginx服务器的实时流量监控模块,还用于获取每个用户访问业务的速率;

所述动态实时流量控制模块,还用于判断获取到的每个用户访问业务的速率是否大于每个用户访问业务的速率的预设阈值;

当获取到的每个用户访问业务的速率大于每个用户访问业务的速率的预设阈值时,生成第四控制信号;

基于所述第四控制信号限制每个用户访问业务的速率。

说明书 :

一种基于Nginx服务器的实时流量控制方法及系统

技术领域

[0001] 本发明涉及流量监控技术领域,尤其涉及一种基于Nginx服务器的实时流量控制方法及系统。

背景技术

[0002] Nginx是一种高性能的HTTP(HyperText Transfer Protocol,超文本传输协议)和反向代理服务器,在工业界有广泛的应用,在Nginx进行流量限制是一个很好的选择,Nginx官方提供的流量控制模块下发的指令能够对流量实现一定程度的控制。随着互联网的快速发展、促使并发业务访问量的快速增长,现有的Nginx提供的流量控制模块不能满足日益增长的业务需求,因此,如何有效的基于Nginx服务器进行实时流量控制是一项亟待解决的问题。

发明内容

[0003] 本发明提供了一种基于Nginx服务器的实时流量控制方法,能够有效的对流量进行实时的监控。
[0004] 本发明提供了一种基于Nginx服务器的实时流量控制方法,其特征在于,包括:
[0005] 获取访问新闻客户端的总速率;
[0006] 判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;
[0007] 当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;
[0008] 基于所述第一控制信号限制访问新闻客户端的总速率。
[0009] 优选地,所述方法还包括:
[0010] 获取IP地址的访问速率;
[0011] 判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值;
[0012] 当获取到的IP地址的访问速率大于IP地址的访问速率预设阈值时,生成第二控制信号;
[0013] 基于所述第二控制信号限制IP地址的访问速率。
[0014] 优选地,所述方法还包括:
[0015] 获取每个业务的速率;判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值;
[0016] 当获取到的每个业务的速率大于每个业务的速率的预设阈值时,生成第三控制信号;
[0017] 基于所述第三控制信号限制每个业务的速率。
[0018] 优选地,所述方法还包括:
[0019] 获取每个用户访问业务的速率;
[0020] 判断获取到的每个用户访问业务的速率是否大于每个用户访问业务的速率的预设阈值;
[0021] 当获取到的每个用户访问业务的速率大于每个用户访问业务的速率的预设阈值时,生成第四控制信号;
[0022] 基于所述第四控制信号限制每个用户访问业务的速率。
[0023] 优选地,所述的方法还包括:
[0024] 每间隔n分钟,从Nginx服务器中分别获取IP地址和每个用户访问业务的历史数据;
[0025] 对时间区间[now_ts–interval,now_ts]的历史数据进行拟合,得到拟合函数f(x),判断f(x)在区间[now_ts–interval,now_ts]的斜率θ,若θ小于θmin,则停止,若否则:
[0026] 计算 的值,即区间[now_ts–interval,now_ts]的中值,若大于每个网络协议的访问速率预设阈值或每个用户访问业务的速
率的预设阈值,通过基于Nginx服务器与脚本语言的网页平台发送超文本传输协议请求设置IP地址的访问速率预设阈值或每个用户访问业务的速率的预设阈值。
[0027] 一种基于Nginx服务器的实时流量控制系统,包括:
[0028] 基于Nginx服务器的实时流量监控模块,用于获取访问新闻客户端的总速率;
[0029] 动态实时流量控制模块,用于判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;
[0030] 当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;
[0031] 基于所述第一控制信号限制访问新闻客户端的总速率。
[0032] 优选地,所述基于Nginx服务器的实时流量监控模块,还用于获取IP地址的访问速率;
[0033] 所述动态实时流量控制模块,还用于判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值;
[0034] 当获取到的IP地址的访问速率大于IP地址的访问速率预设阈值时,生成第二控制信号;
[0035] 基于所述第二控制信号限制IP地址的访问速率。
[0036] 优选地,所述基于Nginx服务器的实时流量监控模块,还用于获取每个业务的速率;
[0037] 所述动态实时流量控制模块,还用于判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值;
[0038] 当获取到的每个业务的速率大于每个业务的速率的预设阈值时,生成第三控制信号;
[0039] 基于所述第三控制信号限制每个业务的速率。
[0040] 优选地,所述基于Nginx服务器的实时流量监控模块,还用于获取每个用户访问业务的速率;
[0041] 所述动态实时流量控制模块,还用于判断获取到的每个用户访问业务的速率是否大于每个用户访问业务的速率的预设阈值;
[0042] 当获取到的每个用户访问业务的速率大于每个用户访问业务的速率的预设阈值时,生成第四控制信号;
[0043] 基于所述第四控制信号限制每个用户访问业务的速率。
[0044] 优选地,所述系统还包括:
[0045] 所述基于Nginx服务器的实时流量监控模块,还用于每间隔n分钟,从Nginx服务器中分别获取IP地址和每个用户访问业务的历史数据;
[0046] 所述动态实时流量控制模块,还用于对时间区间[now_ts–interval,now_ts]的历史数据进行拟合,得到拟合函数f(x),判断f(x)在区间[now_ts–interval,now_ts]的斜率θ;若θ大于等于于θmin时,计算 的值,即区间[now_ts–interval,now_ts]的中值,若 大于每个网络协议的访问速率预设阈值或每个
用户访问业务的速率的预设阈值,通过基于Nginx服务器与脚本语言的网页平台发送超文本传输协议请求设置每个网络协议的访问速率预设阈值或每个用户访问业务的速率的预设阈值。
[0047] 由上述方案可知,本发明提供的一种基于Nginx服务器的实时流量控制方法,当需要对流量进行实时的监控时,首先获取访问新闻客户端的总速率,然后判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值,当判断获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号,最后基于第一控制信号限制访问新闻客户端的总速率,相对于现有技术能够更加有效的对流量进行实时监控。

附图说明

[0048] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0049] 图1为本发明公开的一种基于Nginx服务器的实时流量控制方法实施例1的方法流程图;
[0050] 图2为本发明公开的一种基于Nginx服务器的实时流量控制方法实施例2的方法流程图;
[0051] 图3为本发明公开的一种基于Nginx服务器的实时流量控制方法实施例3的方法流程图;
[0052] 图4为本发明公开的一种基于Nginx服务器的实时流量控制方法实施例4的方法流程图;
[0053] 图5为本发明公开的一种设置每个网络协议的访问速率预设阈值或每个用户访问业务的速率的预设阈值的方法的流程图;
[0054] 图6为本发明公开的一种基于Nginx服务器的实时流量控制系统实施例1的结构示意图;
[0055] 图7为本发明公开的一种基于Nginx服务器的实时流量控制系统实施例2的结构示意图;
[0056] 图8为本发明公开的一种基于Nginx服务器的实时流量控制系统实施例3的结构示意图;
[0057] 图9为本发明公开的一种基于Nginx服务器的实时流量控制系统实施例4的结构示意图;
[0058] 图10为本发明公开的一种设置每个网络协议的访问速率预设阈值或每个用户访问业务的速率的预设阈值的结构示意图。

具体实施方式

[0059] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0060] 为了更加特定地强调实施的独立性,本说明书涉及许多模块或单元。举例而言,模块或单元可由硬件电路实现,该硬件电路包括特制VLSI电路或门阵列,比如逻辑芯片、晶体管,或其它组件。模块或单元也可在可编程的硬设备中实现,比如场效可编程门阵列、可编程阵列逻辑、可编程逻辑设备等等。
[0061] 模块或单元也可在藉由各种形式的处理器所执行的软件中实现。比如说,一可执行码模块可包括一个或多个实体的或逻辑的计算机指令区块,该区块可能形成为,比如说,对象、程序或函数。然而,鉴别模块或单元的可执行部分不需要物理上放置在一起,但可由存于不同位置的不同指令所组成,当逻辑上组合在一起时,形成模块或单元且达到该模块或单元所要求的目的。
[0062] 实际上,可执行码模块或单元可以是一单一指令或多个指令,甚至可以分布在位于不同的程序中的数个不同的码区段,并且横跨数个存储设备。同样地,操作数据可被辨识及显示于此模块或单元中,并且可以以任何合适的形式实施且在任何合适的数据结构形式内组织。操作数据可以集合成单一数据集,或可分布在具有不同的存储设备的不同的位置,且至少部分地只以电子信号方式存在于一系统或网络。
[0063] 本说明书所提及的“实施例”或类似用语表示与实施例有关的特性、结构或特征,包括在本发明的至少一实施例中。因此,本说明书所出现的用语“在一实施例中”、“在实施例中”以及类似用语可能但不必然都指向相同实施例。
[0064] 再者,本发明所述特性、结构或特征可以以任何方式结合在一个或多个实施例中。以下说明将提供许多特定的细节,比如编程序、软件模块、用户选择、网络交易、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等例子,以提供对本发明实施例的了解。然而相关领域的普通技术人员将看出本发明,即使没有利用其中一个或多个特定细节,或利用其它方法、组件、材料等亦可实施。另一方面,为避免混淆本发明,公知的结构、材料或操作并没有详细描述。
[0065] 如图1所示,为本发明公开的一种基于Nginx服务器的实时流量控制方法实施例1的方法流程图,该方法包括:
[0066] S101、获取访问新闻客户端的总速率;
[0067] S102、判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;
[0068] 客户端的请求通过公司的负载均衡设备的转发到新闻客户端的Nginx服务器集群。防止正常流量过高或恶意攻击造成整个新闻客户端的流量过大,影响业务,造成不必要的损失。本实施例在每一个Nginx服务器上进行了流量的限制,判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值total_rate。
[0069] S103、当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;
[0070] 若该请求的速率超过了预设的阈值total_rate,则生成第一控制信号对请求进行限制。
[0071] S104、基于第一控制信号限制访问新闻客户端的总速率。
[0072] 通过第一控制信号限制访问新闻客户端的总速率,使到达后端的请求速率保持在[0,total_rate*N]范围内,其中N为Nginx服务器的个数。
[0073] 综上所述,在上述实施例中,当需要对流量进行实时的监控时,首先获取访问新闻客户端的总速率,然后判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值,当判断获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号,最后基于第一控制信号限制访问新闻客户端的总速率,相对于现有技术能够更加有效的对流量进行实时监控。
[0074] 如图2所示,为本发明公开的一种基于Nginx服务器的实时流量控制方法实施例2的方法流程图,该方法包括:
[0075] S201、获取访问新闻客户端的总速率;
[0076] S202、判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;
[0077] 客户端的请求通过公司的负载均衡设备的转发到新闻客户端的Nginx服务器集群。防止正常流量过高或恶意攻击造成整个新闻客户端的流量过大,影响业务,造成不必要的损失。本实施例在每一个Nginx服务器上进行了流量的限制,判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值total_rate。
[0078] S203、当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;
[0079] 若该请求的速率超过了预设的阈值total_rate,则生成第一控制信号对请求进行限制。
[0080] S204、基于第一控制信号限制访问新闻客户端的总速率;
[0081] 通过第一控制信号限制访问新闻客户端的总速率,使到达后端的请求速率保持在[0,total_rate*N]范围内,其中N为Nginx服务器的个数。
[0082] S205、获取IP地址的访问速率;
[0083] S206、判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值;
[0084] 为防止恶意的用户模拟多个用户的唯一标识对某业务(API)进行访问,获取的业务流量信息中还包括IP地址的访问速率,判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值IP_rate。
[0085] S207、当获取到的IP地址的访问速率大于IP地址的访问速率预设阈值时,生成第二控制信号;
[0086] 当判断获取到的IP地址的访问速率大于IP地址的访问速率预设阈值IP_rate时,生成第二控制信号。
[0087] S207、基于第二控制信号限制IP地址的访问速率。
[0088] 基于生成的第二控制信号对IP地址的访问速率进行限制。
[0089] 综上所述,本实施例在上述实施例的基础上进一步实现了对IP地址的访问速率的限制。
[0090] 如图3所示,为本发明公开的一种基于Nginx服务器的实时流量控制方法实施例3的方法流程图,该方法包括:
[0091] S301、获取访问新闻客户端的总速率;
[0092] S302、判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;
[0093] 客户端的请求通过公司的负载均衡设备的转发到新闻客户端的Nginx服务器集群。防止正常流量过高或恶意攻击造成整个新闻客户端的流量过大,影响业务,造成不必要的损失。本实施例在每一个Nginx服务器上进行了流量的限制,判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值total_rate。
[0094] S303、当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;
[0095] 若该请求的速率超过了预设的阈值total_rate,则生成第一控制信号对请求进行限制。
[0096] S304、基于第一控制信号限制访问新闻客户端的总速率;
[0097] 通过第一控制信号限制访问新闻客户端的总速率,使到达后端的请求速率保持在[0,total_rate*N]范围内,其中N为Nginx服务器的个数。
[0098] S305、获取IP地址的访问速率;
[0099] S306、判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值;
[0100] 为防止恶意的用户模拟多个用户的唯一标识对某业务(API)进行访问,获取的业务流量信息中还包括IP地址的访问速率,判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值IP_rate。
[0101] S307、当获取到的IP地址的访问速率大于IP地址的访问速率预设阈值时,生成第二控制信号;
[0102] 当判断获取到的IP地址的访问速率大于IP地址的访问速率预设阈值IP_rate时,生成第二控制信号。
[0103] S308、基于第二控制信号限制IP地址的访问速率;
[0104] 基于生成的第二控制信号对IP地址的访问速率进行限制。
[0105] S309、获取每个业务的速率;
[0106] S310、判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值;
[0107] 在上述实施例中对整个新闻客户端的流量进行了限制,还不能保证每一个业务都会正常运行,因为,每个业务的所承受的压力不一样,即使整个新闻客户端的请求速率未超过total_rate*N,有可能会超过某些业务的阈值API_total,造成对该业务的影响。以及某些业用户对某业务访问过频繁或者恶意的手段访问,会造成对其他用户的不公平,以及使该业务失去太多价值。
[0108] S311、当获取到的每个业务的速率大于每个业务的速率的预设阈值时,生成第三控制信号;
[0109] S312、基于第三控制信号限制每个业务的速率。
[0110] 因此,本实施例进一步判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值API_total,在Nginx服务器上,访问一次API,将访问API的计数加一,存放于数据库Redis中。并计算访问API的速率,判断是否超过阈值API_total。
[0111] 如图4所示,为本发明公开的一种基于Nginx服务器的实时流量控制方法实施例4的方法流程图,该方法包括:
[0112] S401、获取访问新闻客户端的总速率;
[0113] S402、判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;
[0114] 客户端的请求通过公司的负载均衡设备的转发到新闻客户端的Nginx服务器集群。防止正常流量过高或恶意攻击造成整个新闻客户端的流量过大,影响业务,造成不必要的损失。本实施例在每一个Nginx服务器上进行了流量的限制,判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值total_rate。
[0115] S403、当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;
[0116] 若该请求的速率超过了预设的阈值total_rate,则生成第一控制信号对请求进行限制。
[0117] S404、基于第一控制信号限制访问新闻客户端的总速率;
[0118] 通过第一控制信号限制访问新闻客户端的总速率,使到达后端的请求速率保持在[0,total_rate*N]范围内,其中N为Nginx服务器的个数。
[0119] S405、获取IP地址的访问速率;
[0120] S406、判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值;
[0121] 为防止恶意的用户模拟多个用户的唯一标识对某业务(API)进行访问,获取的业务流量信息中还包括IP地址的访问速率,判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值IP_rate。
[0122] S407、当获取到的IP地址的访问速率大于IP地址的访问速率预设阈值时,生成第二控制信号;
[0123] 当判断获取到的IP地址的访问速率大于IP地址的访问速率预设阈值IP_rate时,生成第二控制信号。
[0124] S408、基于第二控制信号限制IP地址的访问速率;
[0125] 基于生成的第二控制信号对IP地址的访问速率进行限制。
[0126] S409、获取每个业务的速率;
[0127] 在上述实施例中对整个新闻客户端的流量进行了限制,还不能保证每一个业务都会正常运行,因为,每个业务的所承受的压力不一样,即使整个新闻客户端的请求速率未超过total_rate*N,有可能会超过某些业务的阈值API_total,造成对该业务的影响。以及某些业用户对某业务访问过频繁或者恶意的手段访问,会造成对其他用户的不公平,以及使该业务失去太多价值。
[0128] 因此,本实施例进一步判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值API_total,在Nginx服务器上,访问一次API,将访问API的计数加一,存放于数据库Redis中。并计算访问API的速率,判断是否超过阈值API_total。
[0129] S410、判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值;
[0130] 在上述实施例中对整个新闻客户端的流量进行了限制,还不能保证每一个业务都会正常运行,因为,每个业务的所承受的压力不一样,即使整个新闻客户端的请求速率未超过total_rate*N,有可能会超过某些业务的阈值API_total,造成对该业务的影响。以及某些业用户对某业务访问过频繁或者恶意的手段访问,会造成对其他用户的不公平,以及使该业务失去太多价值。
[0131] S411、当获取到的每个业务的速率大于每个业务的速率的预设阈值时,生成第三控制信号;
[0132] S412、基于第三控制信号限制每个业务的速率;
[0133] S413、获取每个用户访问业务的速率;
[0134] S414、判断获取到的每个用户访问业务的速率是否大于每个用户访问业务的速率的预设阈值;
[0135] 进一步判断获取到的每个用户访问业务的速率是否大于每个用户访问业务的速率的预设阈值CID_API_rate。
[0136] S415、当获取到的每个用户访问业务的速率大于每个用户访问业务的速率的预设阈值时,生成第四控制信号;
[0137] S416、基于第四控制信号限制每个用户访问业务的速率。
[0138] 综上所述,在上述实施例中,能够实现对访问新闻客户端的总速率的限制、能够实现对每个IP的访问速率的限制、能够实现对每个业务的速率限制以及能够实现对每个用户访问API的速率的限制。
[0139] 本发明还能够实现动态设置速率参数,参数TOTAL_rate和API_rate的初始化,是根据对整个系统和单个业务的进行压力测试的结果,这两个值一般不会变化,若系统或业务升级,则可以通过web平台进行修改,使系统和业务合理提供服务。
[0140] 参数IP_rate和CID_API_rate的初始化是根据经验值设置,初始化的值不一定合理,需要根据每个IP和用户访问API的情况进行动态的调整,否则会流失部分的用户。动态设置参数IP_rate、CID_API_rate步骤如图5所示,包括以下步骤:
[0141] S501、每间隔n分钟,从Nginx服务器中分别获取每个网络协议和每个用户访问业务的历史数据;
[0142] Web平台每隔n分钟,从Redis服务器中分别获取IP和CID_API的历史数据。
[0143] S502、对时间区间[now_ts–interval,now_ts]的历史数据进行拟合,得到拟合函数f(x),判断f(x)在区间[now_ts–interval,now_ts]的斜率θ,若θ小于θmin,则停止,若否则进入S503:
[0144] 对时间区间[now_ts–interval,now_ts]的历史数据进行拟合,得到拟合函数f(x),判断f(x)在区间[now_ts–interval,now_ts]的斜率θ,若θ小于θmin,则停止,否则转步骤S503。
[0145] S503、计算 的值,即区间[now_ts–interval,now_ts]的中值,若 大于每个网络协议的访问速率预设阈值或每个用户访问业
务的速率的预设阈值,通过基于Nginx服务器与脚本语言的网页平台发送超文本传输协议请求设置每个网络协议的访问速率预设阈值或每个用户访问业务的速率的预设阈值。
[0146] 计算 的值,即区间[now_ts–interval,now_ts]的中值,若大于IP_rate,通过web平台发送http请求设置IP_rate的值,对
CID_API_rate同理,这些参数的设置会实时生效,不用重启或重新加载Nginx服务器集群。
[0147] 如图6所示,为本发明公开的一种基于Nginx服务器的实时流量控制系统实施例1的结构示意图,该系统包括:
[0148] 基于Nginx服务器的实时流量监控模块601,用于获取访问新闻客户端的总速率;
[0149] 动态实时流量控制模块602,用于判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;基于第一控制信号限制访问新闻客户端的总速率。
[0150] 客户端的请求通过公司的负载均衡设备的转发到新闻客户端的Nginx服务器集群。防止正常流量过高或恶意攻击造成整个新闻客户端的流量过大,影响业务,造成不必要的损失。本实施例在每一个Nginx服务器上进行了流量的限制,判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值total_rate。
[0151] 若该请求的速率超过了预设的阈值total_rate,则生成第一控制信号对请求进行限制
[0152] 通过第一控制信号限制访问新闻客户端的总速率,使到达后端的请求速率保持在[0,total_rate*N]范围内,其中N为Nginx服务器的个数。
[0153] 综上所述,在上述实施例中,当需要对流量进行实时的监控时,首先Nginx服务器的实时流量监控模块获取访问新闻客户端的总速率,然后判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值,当判断获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号,最后基于第一控制信号限制访问新闻客户端的总速率,相对于现有技术能够更加有效的对流量进行实时监控。
[0154] 如图7所示,为本发明公开的一种基于Nginx服务器的实时流量控制系统实施例2的结构示意图,该系统包括:
[0155] 基于Nginx服务器的实时流量监控模块701,用于获取访问新闻客户端的总速率;
[0156] 动态实时流量控制模块702,用于判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;基于第一控制信号限制访问新闻客户端的总速率;
[0157] 客户端的请求通过公司的负载均衡设备的转发到新闻客户端的Nginx服务器集群。防止正常流量过高或恶意攻击造成整个新闻客户端的流量过大,影响业务,造成不必要的损失。本实施例在每一个Nginx服务器上进行了流量的限制,判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值total_rate。
[0158] 若该请求的速率超过了预设的阈值total_rate,则生成第一控制信号对请求进行限制
[0159] 通过第一控制信号限制访问新闻客户端的总速率,使到达后端的请求速率保持在[0,total_rate*N]范围内,其中N为Nginx服务器的个数。
[0160] 业务流量信息中还包括每个网络协议的访问速率,第二判断模块705,用于判断获取到的每个网络协议的访问速率是否大于每个网络协议的访问速率预设阈值;
[0161] 为防止恶意的用户模拟多个用户的唯一标识对某业务(API)进行访问,获取的业务流量信息中还包括每个网络协议的访问速率,判断获取到的每个网络协议的访问速率是否大于每个网络协议的访问速率预设阈值IP_rate。
[0162] 基于Nginx服务器的实时流量监控模块701,还用于获取IP地址的访问速率;
[0163] 动态实时流量控制模块702,还用于当获取到的IP地址的访问速率大于IP地址的访问速率预设阈值时,生成第二控制信号;基于第二控制信号限制IP地址的访问速率。
[0164] 当判断获取到的IP地址的访问速率大于IP地址的访问速率预设阈值IP_rate时,生成第二控制信号。
[0165] 基于生成的第二控制信号对IP地址的访问速率进行限制。
[0166] 综上所述,本实施例在上述实施例的基础上进一步实现了对IP地址的访问速率的限制。
[0167] 如图8所示,为本发明公开的一种基于Nginx服务器的实时流量控制系统实施例3的结构示意图,该系统包括:
[0168] 基于Nginx服务器的实时流量监控模块801,用于获取访问新闻客户端的总速率;
[0169] 动态实时流量控制模块802,用于判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;
[0170] 客户端的请求通过公司的负载均衡设备的转发到新闻客户端的Nginx服务器集群。防止正常流量过高或恶意攻击造成整个新闻客户端的流量过大,影响业务,造成不必要的损失。本实施例在每一个Nginx服务器上进行了流量的限制,判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值total_rate。
[0171] 若该请求的速率超过了预设的阈值total_rate,则生成第一控制信号对请求进行限制
[0172] 通过第一控制信号限制访问新闻客户端的总速率,使到达后端的请求速率保持在[0,total_rate*N]范围内,其中N为Nginx服务器的个数。
[0173] 业务流量信息中还包括每个网络协议的访问速率,第二判断模块805,用于判断获取到的每个网络协议的访问速率是否大于每个网络协议的访问速率预设阈值;
[0174] 为防止恶意的用户模拟多个用户的唯一标识对某业务(API)进行访问,获取的业务流量信息中还包括每个网络协议的访问速率,判断获取到的每个网络协议的访问速率是否大于每个网络协议的访问速率预设阈值IP_rate。
[0175] 基于Nginx服务器的实时流量监控模块801,还用于获取IP地址的访问速率;
[0176] 动态实时流量控制模块802,还用于当获取到的IP地址的访问速率大于IP地址的访问速率预设阈值时,生成第二控制信号;基于第二控制信号限制IP地址的访问速率;
[0177] 当判断获取到的IP地址的访问速率大于IP地址的访问速率预设阈值IP_rate时,生成第二控制信号。
[0178] 基于生成的第二控制信号对IP地址的访问速率进行限制。
[0179] 基于Nginx服务器的实时流量监控模块801,还用于获取每个业务的速率;
[0180] 动态实时流量控制模块802,还用于判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值;当获取到的每个业务的速率大于每个业务的速率的预设阈值时,生成第三控制信号;基于第三控制信号限制每个业务的速率。
[0181] 在上述实施例中对整个新闻客户端的流量进行了限制,还不能保证每一个业务都会正常运行,因为,每个业务的所承受的压力不一样,即使整个新闻客户端的请求速率未超过total_rate*N,有可能会超过某些业务的阈值API_total,造成对该业务的影响。以及某些业用户对某业务访问过频繁或者恶意的手段访问,会造成对其他用户的不公平,以及使该业务失去太多价值。
[0182] 因此,本实施例进一步判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值API_total,在Nginx服务器上,访问一次API,将访问API的计数加一,存放于数据库Redis中。并计算访问API的速率,判断是否超过阈值API_total。
[0183] 如图9所示,为本发明公开的一种基于Nginx服务器的实时流量控制系统实施例4的结构示意图,该系统包括:
[0184] 基于Nginx服务器的实时流量监控模块901,用于获取访问新闻客户端的总速率;
[0185] 动态实时流量控制模块902,用于判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值;当获取到的访问新闻客户端的总速率大于访问新闻客户端的总速率预设阈值时,生成第一控制信号;基于第一控制信号限制访问新闻客户端的总速率;
[0186] 客户端的请求通过公司的负载均衡设备的转发到新闻客户端的Nginx服务器集群。防止正常流量过高或恶意攻击造成整个新闻客户端的流量过大,影响业务,造成不必要的损失。本实施例在每一个Nginx服务器上进行了流量的限制,判断获取到的访问新闻客户端的总速率是否大于访问新闻客户端的总速率预设阈值total_rate。
[0187] 若该请求的速率超过了预设的阈值total_rate,则生成第一控制信号对请求进行限制。
[0188] 通过第一控制信号限制访问新闻客户端的总速率,使到达后端的请求速率保持在[0,total_rate*N]范围内,其中N为Nginx服务器的个数。
[0189] 基于Nginx服务器的实时流量监控模块901,还用于获取IP地址的访问速率;
[0190] 动态实时流量控制模块902,还用于判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值;当获取到的IP地址的访问速率大于IP地址的访问速率预设阈值时,生成第二控制信号;基于第二控制信号限制IP地址的访问速率;
[0191] 为防止恶意的用户模拟多个用户的唯一标识对某业务(API)进行访问,获取的业务流量信息中还包括IP地址的访问速率,判断获取到的IP地址的访问速率是否大于IP地址的访问速率预设阈值IP_rate。
[0192] 当判断获取到的IP地址的访问速率大于IP地址的访问速率预设阈值IP_rate时,生成第二控制信号。
[0193] 基于生成的第二控制信号对IP地址的访问速率进行限制。
[0194] 基于Nginx服务器的实时流量监控模块901,还用于获取每个业务的速率;
[0195] 动态实时流量控制模块902,还用于判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值;当获取到的每个业务的速率大于每个业务的速率的预设阈值时,生成第三控制信号;基于第三控制信号限制每个业务的速率;
[0196] 在上述实施例中对整个新闻客户端的流量进行了限制,还不能保证每一个业务都会正常运行,因为,每个业务的所承受的压力不一样,即使整个新闻客户端的请求速率未超过total_rate*N,有可能会超过某些业务的阈值API_total,造成对该业务的影响。以及某些业用户对某业务访问过频繁或者恶意的手段访问,会造成对其他用户的不公平,以及使该业务失去太多价值。
[0197] 因此,本实施例进一步判断获取到的每个业务的速率是否大于每个业务的速率的预设阈值API_total,在Nginx服务器上,访问一次API,将访问API的计数加一,存放于数据库Redis中。并计算访问API的速率,判断是否超过阈值API_total。
[0198] 基于Nginx服务器的实时流量监控模块901,还用于获取每个用户访问业务的速率;
[0199] 动态实时流量控制模块902,还用于判断获取到的每个用户访问业务的速率是否大于每个用户访问业务的速率的预设阈值;当获取到的每个用户访问业务的速率大于每个用户访问业务的速率的预设阈值时,生成第四控制信号;基于第四控制信号限制每个用户访问业务的速率。
[0200] 进一步判断获取到的每个用户访问业务的速率是否大于每个用户访问业务的速率的预设阈值CID_API_rate。
[0201] 综上所述,在上述实施例中,能够实现对访问新闻客户端的总速率的限制、能够实现对每个IP的访问速率的限制、能够实现对每个业务的速率限制以及能够实现对每个用户访问API的速率的限制。
[0202] 本发明还能够实现动态设置速率参数,参数TOTAL_rate和API_rate的初始化,是根据对整个系统和单个业务的进行压力测试的结果,这两个值一般不会变化,若系统或业务升级,则可以通过web平台进行修改,使系统和业务合理提供服务。
[0203] 参数IP_rate和CID_API_rate的初始化是根据经验值设置,初始化的值不一定合理,需要根据每个IP和用户访问API的情况进行动态的调整,否则会流失部分的用户。动态设置参数IP_rate、CID_API_rate步骤如图10所示,包括:
[0204] 基于Nginx服务器的实时流量监控模块1001,还用于每间隔n分钟,从Nginx服务器中分别获取IP地址和每个用户访问业务的历史数据;
[0205] Web平台每隔n分钟,从Redis服务器中分别获取IP和CID_API的历史数据。
[0206] 动态实时流量控制模块1002,用于对时间区间[now_ts–interval,now_ts]的历史数据进行拟合,得到拟合函数f(x),判断f(x)在区间[now_ts–interval,now_ts]的斜率θ,若θ小于θmin,则停止,若否则计算 的值,即区间[now_ts–interval,now_ts]的中值,若 大于每个网络协议的访问速率预设
阈值或每个用户访问业务的速率的预设阈值,通过基于Nginx服务器与脚本语言的网页平台发送超文本传输协议请求设置每个网络协议的访问速率预设阈值或每个用户访问业务的速率的预设阈值。
[0207] 对时间区间[now_ts–interval,now_ts]的历史数据进行拟合,得到拟合函数f(x),判断f(x)在区间[now_ts–interval,now_ts]的斜率θ,若θ小于θmin,则停止。
[0208] 计算 的值,即区间[now_ts–interval,now_ts]的中值,若大于IP_rate,通过web平台发送http请求设置IP_rate的值,对
CID_API_rate同理,这些参数的设置会实时生效,不用重启或重新加载Nginx服务器集群。
[0209] 本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0210] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0211] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。