面向多服务网关的限流与自动扩缩容方法技术

技术编号:23609267 阅读:46 留言:0更新日期:2020-03-28 09:07
本申请公开了一种面向多服务网关的限流与自动扩缩容方法,包括步骤:提供OpenResty,将服务参数和OpenResty源码通过集群makefile编译,动态生成nginx.conf文件,根据nginx.conf文件部署与服务相对应的服务网关,统计各服务的流量,并将流量发送至网关系统;服务根据zabbix通过服务的负载,并将负载发送至网关系统;网关系统实时监测流量和负载,当流量和负载不匹配时,进行自动扩缩容。本申请提供的面向多服务网关的限流与自动扩缩容方法可以能够在限流的基础上,在高峰期增加服务器数量,保障业务正常,在低谷时,返还服务器,降低成本。

Current limiting and auto expanding and shrinking method for multi service gateway

【技术实现步骤摘要】
面向多服务网关的限流与自动扩缩容方法
本专利技术涉及计算机
,尤其涉及一种面向多服务网关的限流与自动扩缩容方法。
技术介绍
用户请求一个链接(API)时,这个API对应的后台需要针对API的参数进行逻辑处理,给予返回。如果请求量过大,比如遭遇了DDOS攻击或者秒杀活动,CPU或者内存占用过大,可能导致服务不可用。因此需要在这个服务之前,加个网关层将外部与内部服务进行隔离,这一层的核心功能就是转发,自身没有业务逻辑,把用户的请求转发给后台服务,后台服务再把结果交给网关,网关再响应给后台。转发可以对用户的请求的地址、参数和结果进行记录和修改,因此网关层可以做一些访问控制、授权和防火墙之类的事情。好的网关,比如本专利技术所采用的OpenResty,支持限流,所谓限流,即后台服务每秒最多只能2000个请求,但是秒杀活动的时候,每秒2200,量超了可能导致服务变慢(CPU上升到90%以上)以及不可以用(CPU100%了)。网关本身没有逻辑,能够承受的压力比后台服务大很多,网关对这2200个请求可以正常的释放2000个请求,其余100个在等待队列(如果等待队列的容量只有100个)里等待,等待会造成一个问题,这100个请求的用户的等待时间变长,而剩余的100个请求直接返回结果“当前请求人数过多”,只有部分人能够进入后台服务,其他人的请求被网关拒绝了。无论是等待时间变长还是拒绝的体验都很差,我司尽量做到最优,在保障服务可用的机器上,进行自动扩容。扩容后动态的调整等待队列,当等待队列中有数据时,触发自动扩容,也就是增加后台以及网关的机器,增加了机器后,整个服务的并发数又可以增大了,等待队列也应该相应的增加。本专利技术提供了一种面向多服务网关的限流与自动扩缩容方法。
技术实现思路
有鉴于此,本专利技术提供了一种面向多服务网关的限流与自动扩缩容方法,包括步骤:提供OpenResty,为在nginx上运行的lua脚本提供插件接口,插件接口包括:限流插件接口、特征防刷插件接口、访问控制插件接口、防火墙插件接口和SQL防注入插件接口;将服务参数和OpenResty源码通过集群makefile编译,动态生成nginx.conf文件,其中,服务参数包括:服务的连接数、网关规则数据的配置以及与nginx对应的配置;根据nginx.conf文件部署与服务相对应的服务网关,统计各服务的流量,并将流量发送至网关系统;服务根据zabbix通过服务的负载,并将负载发送至网关系统;网关系统实时监测流量和负载,当流量和负载不匹配时,进行自动扩缩容,自动扩缩容包括自动扩容计算和自动缩容计算;流量为服务在同一时刻处理的并发数,预设并发数阈值,当并发数超过并发数阈值时对并发数进行动态限流,同时将超过并发数阈值的并发数放置在网关服务待处理的队列中,其中,并发数为服务的CPU和内存最先到达80%的并发数;将超过并发数阈值的并发数放置在网关服务待处理的队列中,设置待处理排队时间阈值,当待处理排队时间超过待处理排队时间阈值时,同时接受到请求时,触发自动扩容计算;当待处理排队时间超过待处理排队时间阈值时,同时未接受到请求时,触发自动缩容计算。优选的,并发数根据以下方法动态限流:其中,f(p)为服务对应的网关的负载,Ei(p/n)为服务的单台机器的使用率,n为服务的数量,p为服务的请求数,E(p)为服务的CPU使用率,c为服务的自身的CPU占用;θ(p)为服务的单台机器上请求数p的CPU使用率;R(p)为网关中单台服务器的CPU负载,q为空闲时服务的单台机器自身的CPU占用。优选的,服务的CPU使用率通过服务中zabbix实时监控。优选的,自动扩缩容需要扩容的服务的数量根据以下方法计算:其中,f(n)为自动扩缩容需要扩容的服务的数量,n为服务的单台机器台数,C为服务中单台服务器的CPU负载,q空闲时服务的单台机器自身的CPU占用,m为服务的单台机器CPU的增长。优选的,当集群makefile编译时,根据集群makefile标识和标识对应的服务文件生成nginx.conf文件,并根据nginx.conf文件部署与服务相对应的服务网关;当集群makefile编译后,将服务文件发送至nginx.conf文件中,同根据服务文件生成内存中的数据对象,为Lua脚本提供运行环境。优选的,OpenResty通过桥接执行插件接口。优选的,OpenResty还包括限流插件,通过限流插件调整并发数和超过并发数阈值的并发数。优选的,服务参数的格式为json。与现有技术相比,本专利技术提供的面向多服务网关的限流与自动扩缩容方法,达到如下有益效果:本申请提供的面向多服务网关的限流与自动扩缩容方法可以能够在限流的基础上,在高峰期增加服务器数量,保障业务正常,在低谷时,返还服务器,降低成本。下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本专利技术提供的一种面向多服务网关的限流与自动扩缩容方法的流程图;图2为本专利技术OpenResty调用接口的流程;图3为本专利技术自动扩缩容的流程图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述。应注意到,所描述的实施例实际上仅仅是本专利技术一部分实施例,而不是全部的实施例,且实际上仅是说明性的,决不作为对本专利技术及其应用或使用的任何限制。本申请的保护范围当视所附权利要求所界定者为准。实施例1:参见图1,图1为本专利技术提供的一种面向多服务网关的限流与自动扩缩容方法的流程图;本专利技术提供的一种面向多服务网关的限流与自动扩缩容方法,包括步骤:步骤101,供OpenResty,为在nginx上运行的lua脚本提供插件接口,插件接口包括:限流插件接口、特征防刷插件接口、访问控制插件接口、防火墙插件接口和SQL防注入插件接口;当流量过大时,对流量产生限制,防止网关的上游拒绝访问;对于溢出的流量,网关服务进行排队,并不直接丢弃;对IP的访问频率有限制。特征防刷指某些业务对某些用户或者参数设置限制,例如只允许新用户调用、只允许某些业务条件成立的时候才能调用以及需要某些接口成立才能调用。这些规则在网关系统的后台进行配置。访问控制包括对某些接口进行授权,以及对包含某些参数的请求进行分流,例如对APP的不同版本映射不同的后台API,或对多次失败的登录接口转向到找回密码。防火墙是对参数进行分析得出爬虫和非法访问,对这些请求的IP进行拉黑。SQL防注入是过滤请求的参数,将请求的字符串进行字符串转义,避免后台直接执行SQL。OpenResty只是网关服务器,自身并无多服务概念,本专利技术对OpenRe本文档来自技高网
...

【技术保护点】
1.一种面向多服务网关的限流与自动扩缩容方法,其特征在于,包括步骤:/n提供OpenResty,为在nginx上运行的lua脚本提供插件接口,所述插件接口包括:限流插件接口、特征防刷插件接口、访问控制插件接口、防火墙插件接口和SQL防注入插件接口;/n将服务参数和OpenResty源码通过集群makefile编译,动态生成nginx.conf文件,其中,所述服务参数包括:服务的连接数、网关规则数据的配置以及与nginx对应的配置;/n根据所述nginx.conf文件部署与服务相对应的服务网关,统计各所述服务的流量,并将所述流量发送至网关系统;/n所述服务根据zabbix通过所述服务的负载,并将所述负载发送至所述网关系统;/n所述网关系统实时监测所述流量和所述负载,当所述流量和所述负载不匹配时,进行自动扩缩容,所述自动扩缩容包括自动扩容计算和自动缩容计算;/n所述流量为所述服务在同一时刻处理的并发数,预设所述并发数阈值,当所述并发数超过所述并发数阈值时对所述并发数进行动态限流,同时将超过所述并发数阈值的所述并发数放置在所述网关服务待处理的队列中,其中,所述并发数为所述服务的CPU和内存最先到达80%的并发数;/n将超过所述并发数阈值的所述并发数放置在所述网关服务待处理的队列中,设置待处理排队时间阈值,/n当所述待处理排队时间超过所述待处理排队时间阈值时,同时接受到请求时,触发所述自动扩容计算;/n当所述待处理排队时间超过所述待处理排队时间阈值时,同时未接受到请求时,触发所述自动缩容计算。/n...

【技术特征摘要】
1.一种面向多服务网关的限流与自动扩缩容方法,其特征在于,包括步骤:
提供OpenResty,为在nginx上运行的lua脚本提供插件接口,所述插件接口包括:限流插件接口、特征防刷插件接口、访问控制插件接口、防火墙插件接口和SQL防注入插件接口;
将服务参数和OpenResty源码通过集群makefile编译,动态生成nginx.conf文件,其中,所述服务参数包括:服务的连接数、网关规则数据的配置以及与nginx对应的配置;
根据所述nginx.conf文件部署与服务相对应的服务网关,统计各所述服务的流量,并将所述流量发送至网关系统;
所述服务根据zabbix通过所述服务的负载,并将所述负载发送至所述网关系统;
所述网关系统实时监测所述流量和所述负载,当所述流量和所述负载不匹配时,进行自动扩缩容,所述自动扩缩容包括自动扩容计算和自动缩容计算;
所述流量为所述服务在同一时刻处理的并发数,预设所述并发数阈值,当所述并发数超过所述并发数阈值时对所述并发数进行动态限流,同时将超过所述并发数阈值的所述并发数放置在所述网关服务待处理的队列中,其中,所述并发数为所述服务的CPU和内存最先到达80%的并发数;
将超过所述并发数阈值的所述并发数放置在所述网关服务待处理的队列中,设置待处理排队时间阈值,
当所述待处理排队时间超过所述待处理排队时间阈值时,同时接受到请求时,触发所述自动扩容计算;
当所述待处理排队时间超过所述待处理排队时间阈值时,同时未接受到请求时,触发所述自动缩容计算。


2.根据权利要求1所述的面向多服务网关的限流与自动扩缩容方法,其特征在于,所述并发数根据以下方法动态限流:



其中,f(p)为所述服务对应的所述网关的负载,Ei(p/n)为所述服务的单台机器的使用率,n为所述服务的数量,p为所述服务的请求数,E(p)为所述服务的CPU使...

【专利技术属性】
技术研发人员:黄超郑国春
申请(专利权)人:美味不用等上海信息科技股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1