[发明专利]限流方法、装置、计算机设备和存储介质在审
申请号: | 201810124551.7 | 申请日: | 2018-02-07 |
公开(公告)号: | CN108418764A | 公开(公告)日: | 2018-08-17 |
发明(设计)人: | 俞晓鸣;顾钰芬;李金龙 | 申请(专利权)人: | 深圳壹账通智能科技有限公司 |
主分类号: | H04L12/801 | 分类号: | H04L12/801;H04L12/819 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 孙凯乐 |
地址: | 518052 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 限流 解析文件 策略标识 服务器 计算机设备 存储介质 查找 内存 读取 高速缓存 限流系统 加载 预设 申请 | ||
1.一种限流方法,所述方法包括:
Nginx服务器根据预设的规则定时查找高速缓存Cache里面是否存在当前限流策略标识和相应的用户解析文件标识,若否,则从ETCD服务器中读取当前限流策略标识和相应的用户解析文件标识;
根据所述当前限流策略标识和用户解析文件标识在内存中查找是否存在与所述当前限流策略标识对应的限流策略以及用户解析文件标识对应的用户解析文件;
当内存中不存在所述限流策略和用户解析文件时,则在所述ETCD服务器中查找所述当前限流策略标识对应的限流策略和用户解析文件标识对应的用户解析文件,并通过lua加载到内存中,其中,lua是嵌入到Nginx服务器配置文件中的动态脚本语言;
根据所述限流策略和所述用户解析文件进行限流处理。
2.根据权利要求1所述的方法,其特征在于,所述当内存中不存在所述限流策略和用户解析文件时,则在所述ETCD服务器中查找所述当前限流策略标识对应的限流策略和用户解析文件标识对应的用户解析文件,并通过lua加载到内存中的步骤包括:
当内存中不存在所述限流策略和用户解析文件时,则通过加载Json的方式将在ETCD服务器中的以Json格式存在的限流策略和用户解析文件通过lua加载到内存并转换为Table的形式进行存储。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
将内存中以Table形式存在的限流策略转换为字符串的形式存储到高速缓存Cache中。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
Nginx服务器接收用户请求,所述用户请求中携带有用户信息;
根据所述用户解析文件对所述用户信息进行解析,得到用户特征;
根据所述用户特征从所述限流策略中获取与所述用户特征对应的限流参数;
根据所述限流参数对所述用户请求进行限流处理。
5.根据权利要求4所述的方法,其特征在于,所述限流参数包括限流类型和容量;
所述根据所述限流参数对所述用户请求进行限流处理的步骤包括:
当所述限流类型为令牌类型时,则获取限流参数中包含的更新速率,根据所述容量和更新速率的比值计算得到令牌的失效时间;
根据所述失效时间和所述更新速率实时更新令牌桶中的令牌数;
根据用户请求对应的当前时间获取所述令牌桶中剩余的令牌数;
当剩余的令牌数为0时,则拒绝所述用户请求。
6.根据权利要求4所述的方法,其特征在于,所述限流参数包括限流类型和容量;
所述根据所述限流参数对所述用户请求进行限流处理的步骤包括:
当所述限流类型为并发类型时,实时统计已记录的用户请求数;
若已记录的用户请求数等于所述容量,则拒绝所述用户请求。
7.根据权利要求1-6任一所述的方法,其特征在于,所述根据所述限流参数对所述用户请求进行限流处理的步骤包括:
将所述限流参数发送给Redis服务器,指示所述Redis服务器根据所述限流参数判断是否对所述用户请求放行,并将是否放行的结果返回;
接收Redis服务器返回的结果,根据所述结果进行限流处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳壹账通智能科技有限公司,未经深圳壹账通智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810124551.7/1.html,转载请声明来源钻瓜专利网。