一种去中心化的全局限流方法及系统与流程

文档序号:31863516发布日期:2022-10-19 07:10阅读:49来源:国知局
一种去中心化的全局限流方法及系统与流程

1.本发明涉及限流领域,尤其涉及一种去中心化的全局限流方法及系统。


背景技术:

2.传统的全局限流架构是单独使用一个额外的限流服务,限流服务基于令牌桶算法,每次用户访问业务服务后,业务服务去限流服务取令牌,如果能取到,则允许用户访问业务服务,如果不能取到,说明对应业务服务访问次数已达到最大限制,用户访问被拦截。
3.这种方式有两个缺点,一是需要启动额外的限流服务,导致it资源浪费。二是当需要限流当业务服务很多时,限流服务的负载会很高,导致限流服务本身成为系统瓶颈,影响整个系统的稳定性。


技术实现要素:

4.鉴于上述问题,提出了本发明以便提供克服上述问题或者至少部分地解决上述问题的一种去中心化的全局限流方法及系统。
5.根据本发明的一个方面,提供了一种去中心化的全局限流方法包括:
6.获取业务服务实例;
7.所述业务服务实例配置好全局限流规则及限流私钥,启动所述业务服务实例;
8.客户携带用户凭证访问认证服务实例,获取认证token;
9.客户携带认证token访问业务服务实例,业务服务实例会将该请求转发认证服务,认证服务判断该认证token是否有效,如无效,业务访问失败,如果认证token有效,判断该客户是否在设置的限流规则,如不符合所述限流规则,则访问直接通过;
10.如果符合所述限流规则,业务服务实例根据所述限流规则产生流量信息区块;
11.客户端收到限流信息后,根据当前剩余访问次数调整访问频次,保证访问不触发限流阈值,导致访问失败;
12.业务服务获取到所述流量信息区块后,确认是否被篡改。
13.可选的,所述配置的方式具体包括:通过配置文件、配置中心。
14.可选的,所述客户携带用户凭证访问认证服务实例,获取认证token具体包括:
15.认证服务判断所述用户凭证是否有效,如果无效,访问失败,如果凭证有效,则给该客户颁发认证token。
16.可选的,所述流量信息区块具体包括:
17.限流原始信息,包括:限流规则id,客户端id,业务服务名称,限流时间窗口,窗口起始时间和剩余次数;
18.所述限流规则id包括客户端对应的限流规则标识,每条限流规则的id是唯一的;
19.所述客户端id包括客户端唯一标识,根据所述唯一标识唯一确认客户端访问的实例;
20.所述业务服务名称记录所述限流规则生效下的服务名称;
21.所述限流时间窗口为限流时间范围;
22.所述窗口起始时间为本次限流生效时间;
23.所述剩余次数为对应限流规则下的客户端剩余的访问次数;
24.获取限流信息加密哈希值;
25.限流公钥,配合所述限流私钥完成rsa非对称加密的加密及解密。
26.可选的,所述获取限流信息加密哈希值具体包括:
27.限流信息加密哈希值=rsa_enc(限流私钥,限流信息原始哈希值),其中,rsa代表非对称加密算法,所述限流私钥为业务服务配置的限流信息;
28.所述限流信息原始哈希值生成规则为:
29.所述限流信息原始哈希值=sha256(限流原始信息),其中sha256代表sha256摘要算法。
30.可选的,所述业务服务实例根据所述限流规则产生流量信息区块之后还包括:
31.获取第一原始摘要,包括sha256(限流原始信息),代表对限流原始信息进行摘要生成;
32.获取第二原始摘要:rsa_dec(限流公钥,限流信息加密哈希值),代表对限流信息加密哈希值进行rsa解密,解密后的值为在业务服务端生成的原始信息摘要;
33.如果所述第一原始摘要与所述第二原始摘要不相等,则认为流量信息区块被篡改,访问失效;如果相等,则认为流量信息区块真实有效;
34.业务服务根据限流原始信息及当前时间进行流量信息区块更新,更新后的流量信息再通过产生新的流量信息下发到客户端。
35.可选的,所述限流方法还包括:如果是同样的流量信息区块信息,将所述流量信息区块信息发送到相同的业务服务实例,业务服务实例判断该流量信息区块信息是否已经使用过,如果使用过,则重复的流量信息区块信息将被覆盖,以服务器保存的最新的流量信息为准,避免流量信息区块二次消费。
36.可选的,所述限流方法还包括:
37.如果发现有恶意客户端的流量进入及流量信息区块的重复使用,业务服务实例会实时检测,如果发现流量为恶意访问,立即将客户端的访问返回失败,并短暂将客户对业务服务的访问纳入黑名单。
38.本发明还提供了一种去中心化的全局限流系统,应用上述所述去中心化的全局限流方法,所述限流系统包括:客户端模块,服务模块,负载均衡模块,时间同步模块和认证服务模块;
39.所述客户端模块用于向业务服务发送访问请求,当未达到最大限流次数,服务正常访问,当超过最大限流次数,请求返回异常;
40.所述业务服务模块用于维护限流信息,并根据用户访问情况,及时更新限流信息,保证服务的正常限流功能;
41.所述负载均衡模块用于将客户端访问服务轮询到各个业务服务实例模块,避免服务集中在一个服务实例访问;
42.所述时间同步模块用于各个业务服务实例的时间是一致的,一致的时间是用来保证去中心化后,每个业务服务实例的流量令牌产生与销毁是同步的;
43.所述认证服务模块用于确定每个客户端访问都是经过认证的,防止非法请求到达业务服务。
44.本发明提供的一种去中心化的全局限流方法及系统,方法包括:获取业务服务实例;所述业务服务实例配置好全局限流规则及限流私钥,启动所述业务服务实例;客户携带用户凭证访问认证服务实例,获取认证token;客户携带认证token访问业务服务实例,业务服务实例会将该请求转发认证服务,认证服务判断该认证token是否有效,如无效,业务访问失败,如果认证token有效,判断该客户是否在设置的限流规则,如不符合所述限流规则,则访问直接通过;如果符合所述限流规则,业务服务实例根据所述限流规则产生流量信息区块;客户端收到限流信息后,根据当前剩余访问次数调整访问频次,保证访问不触发限流阈值,导致访问失败;业务服务获取到所述流量信息区块后,确认是否被篡改。全局限流规则不再需要单独的全局限流服务,提高了系统使用效率。通过加密算法及摘要算法的引入,防止限流规则被恶意篡改。
45.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
46.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
47.图1为本发明实施例提供的一种去中心化的全局限流方法的流程图;
48.图2为本发明实施例提供的一种去中心化的全局限流系统的组成框图。
具体实施方式
49.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
50.本发明的说明书实施例和权利要求书及附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。
51.下面结合附图和实施例,对本发明的技术方案做进一步的详细描述。
52.一种去中心化的全局限流方法包括:
53.所有业务服务实例配置好全局限流规则及限流私钥,启动所有业务服务实例。配置方式是通过配置文件或是配置中心。
54.客户携带用户凭证访问认证服务实例,获取认证token,认证服务判断该凭证是否有效,如无效,访问失败,如果凭证有效,则给该客户颁发认证token
55.客户携带认证token访问业务服务实例,业务服务实例会将该请求转发认证服务,认证服务判断该认证token是否有效,如无效,业务访问失败,如果认证token有效,判断该
客户是否在设置的限流规则,如不符合限流规则,则访问直接通过。
56.如果客户端符合限流规则,业务服务实例根据符合的规则产生流量信息区块。区块包含如下信息:
57.限流原始信息,包括限流规则id,客户端id,业务服务名称,限流时间窗口,窗口起始时间和剩余次数,其中:
58.限流规则id包含该客户端对应的限流规则标识,每条限流规则的id是唯一的。
59.客户端id包含客户端唯一标识,通过该标识,可唯一确认客户端访问实例。
60.业务服务名称记录该限流规则生效下的服务名称。
61.限流时间窗口代表限流时间范围,比如一分钟访问300次,那么限流时间窗口就为1分钟。
62.窗口起始时间代表该次限流生效时间,比如15时26分30秒。
63.剩余次数表示该限流规则下该客户端还剩多少次访问次数。当返回次数为0时,所有访问失败,但该区块信息会被一直携带着。
64.限流信息加密哈希值,获取方式如下:
65.限流信息加密哈希值=rsa_enc(限流私钥,限流信息原始哈希值),其中,rsa代表非对称加密算法,限流私钥即业务服务配置的限流信息。限流信息原始哈希值生成规则如下:
66.限流信息原始哈希值=sha256(限流原始信息),其中sha256代表sha256摘要算法。限流原始信息即4.1包含的信息。
67.限流公钥,配合限流私钥可完成rsa非对称加密的加密及解密。
68.通过限流原始信息使得限流信息在客户端及服务端之间同步,通过限流信息加密哈希值及限流公钥保证限流信息无法篡改,保证限流信息的真实有效,防止恶意用户恶意篡改限流信息从而使得限流规则失效。
69.客户端收到限流信息后,可根据当前剩余访问次数调整访问频次,保证访问不触发限流阈值,导致访问失败。
70.流量信息区块更新方法:业务服务获取到客户得流量信息区块后,首先确认区块信息是否被篡改,确认方法如下:
71.第一原始摘要:sha256(限流原始信息)。代表对限流原始信息进行摘要生成。
72.第二原始摘要:rsa_dec(限流公钥,限流信息加密哈希值)。代表对限流信息加密哈希值进行rsa解密,解密后的值是在业务服务端生成的原始信息摘要。
73.如果第一原始摘要与第二原始摘要不相等,则认为流量信息区块被篡改,该次访问失效。如果相等,则认为流量信息区块真实有效。业务服务根据限流原始信息及当前时间进行流量信息区块更新。更新后的流量信息再通过上述方法4产生新的流量信息下发到客户端。
74.防止流量信息区块二次消费算法,上述规则无法避免恶意用户重复提交同样的流量信息区块,通过配置负载均衡器规则来解决,如果是同样的流量信息区块信息,将该信息发送到相同的业务服务实例,该业务服务实例会判断该流量信息区块信息是否已经使用过,如果使用过,则该重复的流量信息区块信息将被覆盖,以服务器保存的最新的流量信息为准。从而避免流量信息区块二次消费。
75.恶意流量惩罚方法,如果发现有恶意客户端的流量进入及流量信息区块的重复使用,业务服务实例会实时检测,如果发现流量为恶意访问,立即将该客户端的访问返回失败,并短暂将该客户对该业务服务的访问纳入黑名单。恶意流量定义及禁止访问的时间可有用户自定义配置。
76.如图2所示,一种去中心化的全局限流系统,包括客户端模块,服务模块,负载均衡模块,时间同步模块和认证服务模块。
77.客户端模块负责向业务服务发送访问请求,当未达到最大限流次数,服务正常访问,当超过最大限流次数,请求返回异常。
78.业务服务模块负责维护限流信息,并根据用户访问情况,及时更新限流信息,保证服务的正常限流功能。
79.负载均衡模块负责将客户端访问服务轮询到各个业务服务实例模块,避免服务集中在一个服务实例访问。
80.时间同步模块负责各个业务服务实例的时间是一致的,一致的时间是用来保证去中心化后,每个业务服务实例的流量令牌产生与销毁是同步的。
81.认证服务模块用来确定每个客户端访问都是经过认证的,防止非法请求到达业务服务。
82.有益效果:全局限流去中心化:全局限流规则不再需要单独的全局限流服务,提高了系统使用效率。
83.限流规则防篡改:通过加密算法及摘要算法的引入,防止限流规则被恶意篡改。
84.实时性高:通过时间同步,每个业务实例可同步服务实例token的生成,避免token的集中生成,提高系统实时性。
85.高并发支持:系统所有环节考虑实际应用中可能产生的性能瓶颈,系统的限流规则为去中心化设计。限流规则的生效及判断在整个系统的每个业务实例进行。保证了系统的高并发性,降低了对单点系统的依赖。
86.以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1