一种限流处理方法、装置、电子设备及计算机可读介质与流程

未命名 10-10 阅读:165 评论:0


1.本技术涉及计算机技术领域,尤其涉及一种限流处理方法、装置、电子设备及计算机可读介质。


背景技术:

2.目前,用户通过不同的供应商渠道访问业务平台时,供应商渠道的限流多是按照业务平台整体的访问量进行控制限流,限流效果差,且无法进行服务器资源的动态分配。
3.在实现本技术过程中,发明人发现现有技术中至少存在如下问题:
4.现有的供应商渠道限流效果差,无法进行服务器资源的动态分配。


技术实现要素:

5.有鉴于此,本技术实施例提供一种限流处理方法、装置、电子设备及计算机可读介质,能够解决现有的供应商渠道限流效果差,无法进行服务器资源的动态分配问题。
6.为实现上述目的,根据本技术实施例的一个方面,提供了一种限流处理方法,包括:
7.接收业务访问请求,获取对应的渠道标识,以调用渠道标识对应的渠道的限流配置信息,确定对应的限流模式;
8.根据限流模式判断是否为单实例限流模式,若是,获取渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定渠道对应的单实例进行缩容或扩容,以执行业务访问请求;
9.若否,则获取渠道对应的各个单实例,切换各个单实例的限流配置信息为分布式集群限流配置信息,以基于切换后的各个单实例执行业务访问请求。
10.可选地,确定渠道对应的单实例进行缩容或扩容,包括:
11.响应于更新后的访问量小于预设的缩容访问量阈值,确定渠道对应的单实例的访问量小于预设的缩容访问量阈值的累计次数;
12.响应于确定累计次数达到预设次数阈值,对渠道对应的单实例进行缩容。
13.可选地,确定渠道对应的单实例进行缩容或扩容,包括:
14.响应于更新后的访问量大于预设的扩容访问量阈值,确定渠道对应的单实例的访问量大于预设的扩容访问量阈值的累计次数;
15.响应于确定累计次数达到预设次数阈值,对渠道对应的单实例进行扩容。
16.可选地,在获取对应的渠道标识之前,方法还包括:
17.确定接收业务访问请求时的实时访问量,调用限流组件,响应于实时访问量小于限流组件的访问量阈值,调用切面以基于实时访问量判断是否开启服务限流,响应于服务限流开启,执行业务访问请求对应的渠道标识的获取进程。
18.可选地,基于切换后的各个单实例执行业务访问请求,包括:
19.调用时间滑动窗口算法,确定渠道的总访问量,进而临时存储至分布式集群高速
缓存中间件中,进而生成定时更新任务;
20.执行定时更新任务,以定时更新分布式集群高速缓存中间件中的总访问量,并将更新的总访问量保存至集群中;
21.对更新后的未超出总访问量阈值的访问量对应的业务访问请求基于分布式算法分配至分布式集群中的对应实例,进而调用对应实例执行分配的业务访问请求;
22.对更新后的超出总访问量阈值的访问量对应的业务访问请求执行进行拒绝服务处理。
23.可选地,限流处理方法还包括:
24.实时动态调整时间滑动窗口算法对应的时间窗口大小和总访问量阈值。
25.可选地,限流处理方法还包括:
26.基于渠道标识,确定对应的数据看板区域;
27.在数据看板区域显示对应的渠道标识对应的总访问量以及拒绝服务的业务访问请求。
28.另外,本技术还提供了一种限流处理装置,包括:
29.接收单元,被配置成接收业务访问请求,获取对应的渠道标识,以调用渠道标识对应的渠道的限流配置信息,确定对应的限流模式;
30.执行单元,被配置成根据限流模式判断是否为单实例限流模式,若是,获取渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定渠道对应的单实例进行缩容或扩容,以执行业务访问请求;
31.切换单元,被配置成若否,则获取渠道对应的各个单实例,切换各个单实例的限流配置信息为分布式集群限流配置信息,以基于切换后的各个单实例执行业务访问请求。
32.可选地,执行单元进一步被配置成:
33.响应于更新后的访问量小于预设的缩容访问量阈值,确定渠道对应的单实例的访问量小于预设的缩容访问量阈值的累计次数;
34.响应于确定累计次数达到预设次数阈值,对渠道对应的单实例进行缩容。
35.可选地,执行单元进一步被配置成:
36.响应于更新后的访问量大于预设的扩容访问量阈值,确定渠道对应的单实例的访问量大于预设的扩容访问量阈值的累计次数;
37.响应于确定累计次数达到预设次数阈值,对渠道对应的单实例进行扩容。
38.可选地,接收单元进一步被配置成:
39.确定接收业务访问请求时的实时访问量,调用限流组件,响应于实时访问量小于限流组件的访问量阈值,调用切面以基于实时访问量判断是否开启服务限流,响应于服务限流开启,执行业务访问请求对应的渠道标识的获取进程。
40.可选地,切换单元进一步被配置成:
41.调用时间滑动窗口算法,确定渠道的总访问量,进而临时存储至分布式集群高速缓存中间件中,进而生成定时更新任务;
42.执行定时更新任务,以定时更新分布式集群高速缓存中间件中的总访问量,并将更新的总访问量保存至集群中;
43.对更新后的未超出总访问量阈值的访问量对应的业务访问请求基于分布式算法分配至分布式集群中的对应实例,进而调用对应实例执行分配的业务访问请求;
44.对更新后的超出总访问量阈值的访问量对应的业务访问请求执行进行拒绝服务处理。
45.可选地,限流处理装置还包括调整单元,被配置成:
46.实时动态调整时间滑动窗口算法对应的时间窗口大小和总访问量阈值。
47.可选地,限流处理装置还包括显示单元,被配置成:
48.基于渠道标识,确定对应的数据看板区域;
49.在数据看板区域显示对应的渠道标识对应的总访问量以及拒绝服务的业务访问请求。
50.另外,本技术还提供了一种限流处理电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上述的限流处理方法。
51.另外,本技术还提供了一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现如上述的限流处理方法。
52.上述发明中的一个实施例具有如下优点或有益效果:本技术通过接收业务访问请求,获取对应的渠道标识,以调用渠道标识对应的渠道的限流配置信息,确定对应的限流模式;根据限流模式判断是否为单实例限流模式,若是,获取渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定渠道对应的单实例进行缩容或扩容,以执行业务访问请求;若否,则获取渠道对应的各个单实例,切换各个单实例的限流配置信息为分布式集群限流配置信息,以基于切换后的各个单实例执行业务访问请求。从而可以实现按照渠道精细化分析监控、流量管控、动态扩容缩容、单实例和集群双模式切换,提高每个渠道的限流效果,通过动态扩缩容实现对服务器资源的动态分配,提高系统稳定性,给业务赋能。
53.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
54.附图用于更好地理解本技术,不构成对本技术的不当限定。其中:
55.图1是根据本技术第一实施例的限流处理方法的主要流程的示意图;
56.图2是根据本技术第二实施例的限流处理方法的主要流程的示意图;
57.图3是根据本技术第三实施例的限流处理方法的单实例限流模式示意图;
58.图4是根据本技术第四实施例的限流处理方法的分布式集群限流模式示意图;
59.图5是根据本技术实施例的限流处理方法的动态令牌桶限流逻辑示意图;
60.图6是根据本技术实施例的限流处理方法的动态扩缩容示意图;
61.图7是根据本技术实施例的限流处理方法的滑动时间窗口计数方案示意图;
62.图8是根据本技术实施例的限流处理装置的主要单元的示意图;
63.图9是本技术实施例可以应用于其中的示例性系统架构图;
64.图10是适于用来实现本技术实施例的终端设备或服务器的计算机系统的结构示
意图。
具体实施方式
65.以下结合附图对本技术的示范性实施例做出说明,其中包括本技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。本技术技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
66.图1是根据本技术第一实施例的限流处理方法的主要流程的示意图,如图1所示,限流处理方法包括:
67.步骤s101,接收业务访问请求,获取对应的渠道标识,以调用渠道标识对应的渠道的限流配置信息,确定对应的限流模式。
68.本实施例中,限流处理方法的执行主体(例如,可以是服务器)可以通过有线连接或无线连接的方式,接收业务访问请求。执行主体可以获取业务访问请求中携带的渠道标识。渠道标识,例如可以是供应方编号。获取该渠道标识对应的限流配置信息。该限流配置信息中可以包括对流量控制的精准度,以此确定对应的限流模式。限流模式包括单实例限流模式和分布式集群限流模式。
69.具体地,在获取对应的渠道标识之前,方法还包括:
70.确定接收业务访问请求时的实时访问量,调用限流组件,响应于实时访问量小于限流组件的访问量阈值,调用切面以基于实时访问量判断是否开启服务限流,响应于服务限流开启,执行业务访问请求对应的渠道标识的获取进程。
71.示例的,用户通过不同的渠道访问健康险服务平台(保险的一个业务平台)时,先是通过jsf组件进行兜底的限流,保障平台稳定,如果访问量已经超过jsf配置的访问量阈值则直接拒绝访问;如果访问量没有超过jsf配置的访问量阈值,访问应用服务接口时,先是使用切面对需要进行精准控制的接口添加注解,并判断是否开启服务限流即是否开启限流开关,如果开关打开,即表明开启服务限流,至此完成了兜底限流保障平台稳定。在开启服务限流时,执行主体可以确定供应方渠道,执行业务访问请求对应的渠道标识的获取进程,以进行渠道标识的获取。可以理解的是,在访问量没有超过jsf配置的访问量阈值时,执行主体也可以执行业务访问请求对应的渠道标识的获取进程,本技术实施例对执行业务访问请求对应的渠道标识的获取进程的时机不做具体限定。
72.步骤s102,根据限流模式判断是否为单实例限流模式。
73.当执行主体确定用户需求的对流量控制的精准度小于阈值时,确定限流模式为单实例限流模式。单实例限流模式可以扩缩容。分布式集群限流模式不进行扩缩容。
74.步骤s103,若是,获取渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定渠道对应的单实例进行缩容或扩容,以执行业务访问请求。
75.示例的,本技术中流量即预设时间内的访问量。动态扩容或缩容能力实现方案:执行主体首先配置一个共享的流量配额池,如果流量大于配置的阈值的80%,则抢占共享流量池的配置进行扩容,提高服务能力;如果连续多次流量低于阈值的50%,则把流量配额资
源归还到流量池,实现缩容的能力;扩容和缩容都是系统自动化动态化的,可提高系统资源的使用率。基于缩容或扩容后的服务能力执行业务访问请求。
76.具体地,确定渠道对应的单实例进行缩容或扩容,包括:
77.响应于更新后的访问量小于预设的缩容访问量阈值,确定渠道对应的单实例的访问量小于预设的缩容访问量阈值的累计次数;响应于确定累计次数达到预设次数阈值,对渠道对应的单实例进行缩容。
78.具体地,确定渠道对应的单实例进行缩容或扩容,包括:
79.响应于更新后的访问量大于预设的扩容访问量阈值,确定渠道对应的单实例的访问量大于预设的扩容访问量阈值的累计次数;响应于确定累计次数达到预设次数阈值,对渠道对应的单实例进行扩容。
80.示例的,本技术实施例中,流量即预设时间内的访问量。每隔2秒(本技术实施例对刷新频率不做具体限定)刷新一次最新配置数据。用户从渠道a访问系统服务,每次请求,请求量加1,统计单位时间内的(比如每1秒时间内的)请求量,如果当前的请求数量大于配置的请求量的80%(本技术实施例对该比例不做具体限定),然后在远程字典服务(remote dictionary server,redis)中记录高流量访问1次,如果后面的请求量还是维持高流量,每访问1次则高流量的次数加1;如果这个高流量的值达到了1000次(本技术实施例对该次数不做具体限定),则进行扩容,也就是把配置的阈值调高;如果用户请求时,单位时间内的流量小于阈值的50%(本技术实施例对该比例不做具体限定),则记录一次低流量,如果低流量次数达到500次(本技术实施例对该次数不做具体限定)时,则进行缩容,也就是对这个渠道配置的阈值调低。以记录流量的持续大小来实现动态扩缩容功能。
81.步骤s104,若否,则获取渠道对应的各个单实例,切换各个单实例的限流配置信息为分布式集群限流配置信息,以基于切换后的各个单实例执行业务访问请求。
82.当执行主体确定用户需求的对流量控制的精准度大于阈值时,确定限流模式为分布式集群限流模式。进而获取渠道对应的各个单实例组成分布式集群。并切换各个单实例的限流配置信息为分布式集群限流配置信息,执行分布式集群限流模式相关限流进程,以处理业务访问请求。
83.本实施例通过接收业务访问请求,获取对应的渠道标识,以调用渠道标识对应的渠道的限流配置信息,确定对应的限流模式;根据限流模式判断是否为单实例限流模式,若是,获取渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定渠道对应的单实例进行缩容或扩容,以执行业务访问请求;若否,则获取渠道对应的各个单实例,切换各个单实例的限流配置信息为分布式集群限流配置信息,以基于切换后的各个单实例执行业务访问请求。从而可以实现按照渠道精细化分析监控、流量管控、动态扩容缩容、单实例和集群双模式切换,提高每个渠道的限流效果,通过动态扩缩容实现对服务器资源的动态分配,提高系统稳定性,给业务赋能。
84.图2是根据本技术第二实施例的限流处理方法的主要流程示意图,如图2所示,限流处理方法包括:
85.步骤s201,接收业务访问请求,获取对应的渠道标识,以调用渠道标识对应的渠道的限流配置信息,确定对应的限流模式。
86.步骤s202,根据限流模式判断是否为单实例限流模式。
87.执行主体可以根据限流模式标识确定是否为单实例限流模式。
88.步骤s203,若是,获取渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定渠道对应的单实例进行缩容或扩容,以执行业务访问请求。
89.具体地,预设的缩容访问量阈值=50%a+a,其中,a为单位时间内的访问量阈值,其中50%为举例,并不构成对本技术实施例的限定,可以为其他比例。预设的扩容访问量阈值=80%a+a,其中,a为单位时间内的访问量阈值,其中80%为举例,并不构成对本技术实施例的限定,可以为其他比例。
90.步骤s204,若否,则获取渠道对应的各个单实例,切换各个单实例的限流配置信息为分布式集群限流配置信息。分布式集群限流配置信息设定分布式集群不能进行扩容或缩容。
91.步骤s201~步骤s204的原理与步骤s101~步骤s104的原理类似,此处不再赘述。
92.步骤s205,调用时间滑动窗口算法,确定渠道的总访问量,进而临时存储至分布式集群高速缓存中间件中,进而生成定时更新任务。
93.步骤s206,执行定时更新任务,以定时更新分布式集群高速缓存中间件中的总访问量,并将更新的总访问量保存至集群中。
94.步骤s207,对更新后的未超出总访问量阈值的访问量对应的业务访问请求基于分布式算法分配至分布式集群中的对应实例,进而调用对应实例执行分配的业务访问请求。
95.步骤s208,对更新后的超出总访问量阈值的访问量对应的业务访问请求执行进行拒绝服务处理。
96.示例的,用户通过jsf组件访问应用服务平台时,会先通过jsf的限流装置,该装置会作为第一步的限流策略。如果用户访问流量超过jsf的阈值则直接拒绝服务;通过jsf访问具体的业务应用时,先通过切面+注解对需要进行渠道精准限流的接口打标,从动态云配置平台ducc拉取限流总开关的配置,如果开关打开,则使用基于分布式集群的滑动时间窗口计数法按照渠道精细化的统计渠道访问的总次数,即渠道的总访问量,该统计次数的数据会临时放到高速缓存jimdb中间件中;因为jimdb是分布式集群的资源,计数也是按照集群面试计数,因此可以实现分布式的按照渠道精准限流能力;对于超出阈值的访问进行拒绝服务处理,并按照分钟级别把每个渠道的访问流量数据缓存到jimdb中,然后启动job定时任务,定时扫码jimdb中的渠道流量数据,把数据最终保存到es集群(es集群是一个存储介质,在本技术中表示存储访问量的介质,也可以替换其他大数据存储介质)中,在应用服务平台开放一个数据看板,可实现按照渠道精准分析监控,以此更好给业务赋能。
97.具体地,限流处理方法还包括:实时动态调整时间滑动窗口算法对应的时间窗口大小和总访问量阈值。
98.示例的,把时间间隔分片,动态统计单位时间内请求量。例如渠道a限流每秒处理1000个请求,把每1秒作为一个窗口。每1秒移动一次,缓存中保留每次的请求次数。每次移动判断一下总次数是否超出1000次限制。时间窗口大小、访问总量阈值可实时动态调整,且每个渠道也可以独立定制这两个参数,可实现各个渠道精准限流能力。
99.具体地,限流处理方法还包括:
100.基于渠道标识,确定对应的数据看板区域;在数据看板区域显示对应的渠道标识对应的总访问量以及拒绝服务的业务访问请求。
101.执行主体在运营操作的平台基于渠道标识为对应的渠道分配一个数据看板,以实时显示渠道精细化的监控和分析。具体是按照渠道统计单位时间内的访问量信息,将该访问量先发到消息队列mq中,然后异步地更新到es集群中,在运营操作的平台提供一个数据看板,则可以实现按照渠道精细化地监控和分析,更好地给业务服务赋能。
102.图3是根据本技术第三实施例的限流处理方法的单实例限流模式示意图。本技术实施例的限流处理方法,应用于基于供应方渠道进行限流的场景。如图3所示,用户通过不同的渠道访问健康险服务平台(保险的一个业务平台)的h5页面时,先是通过jsf组件进行兜底的限流,保障平台稳定,如果访问量已经超过jsf配置的阈值,即达到jsf限流上限,则执行主体直接拒绝访问,结束并返回限流码;如果访问量没有超过jsf组件配置的阈值,调用应用服务以调用aop切面,访问应用服务接口时,先是使用切面对需要进行精准控制的接口添加注解,并判断是否开启服务限流,如果开启服务限流,则基于java虚拟机(jvm)使用jvm实例令牌桶算法进行限流,如果流量超出阈值则拒绝访问,否则正常提供服务进行业务处理并响应结果,进而更新动态云配置平台的限流配置信息。同时异步进行动态扩缩容处理,具体为如果流量大于阈值的a%(本技术实施例对a不做具体限定)则抢占共享流量池中的配额进行扩容;如果连续n次低于当前阈值的b%(本技术实施例对b不做具体限定),则把流量配额资源归还到流量池,进行缩容,进而调用缓存中间件以基于扩/缩容后的流量配置保持渠道接口的共享流量配额,同时按照渠道统计单位时间内的访问量信息,把这个访问量先发到mq消息中,通过发送流量信息的消息队列mq。监听流量信息的mq,然后将流量信息持久化到es,异步地更新到es集群中,es集群是一个存储介质,在本技术中表示存储访问量的介质,也可以替换其他大数据存储介质在运营操作的平台提供一个数据看板,则可以实现按照渠道精细化的监控和分析,更好的给业务服务赋能。
103.其中,基于java虚拟机(jvm)使用令牌桶算法,如图5所示,具体流程包括:接收用户的业务访问请求;尝试获取令牌token;如果从令牌桶中获取到token,则继续访问后续的服务资源,执行业务处理流程;如果没有获取到token则直接拒绝请求,表明访问量过大,结束。令牌token是定时生成的,无需人工触发。token生成步骤:服务程序启动后,会每秒生成额定的token;token生成的数量和频率可以通过动态云配置平台,设置/重置生产令牌token的频率值,以进行动态调整,根据最新频率生产令牌;比如原先是1秒生成1000个token,后来系统管理员感觉token不够用,把每秒生成的token数量调整为2000,那么后面系统就会每秒生成2000个token。生成token后会放到令牌桶里;令牌桶里的令牌,用户每访问一次就是拿走一个;如果令牌桶里的令牌满了,表明访问量较低,抛弃刚生成的令牌,不向令牌桶中继续放入令牌;如果令牌桶没有满,则继续向令牌桶中放入刚生成的令牌,如果令牌桶空了,表明访问量很大。
104.示例的,如图6所示,动态扩缩容具体实现方案可以为:每隔2秒(本技术实施例对刷新频率不做具体限定)刷新一次最新配置数据,实时获取最新配置信息(轮询间隔2秒,本技术实施例对轮询间隔不做具体限定)。用户从渠道a访问系统服务,发出针对渠道a的请求,每次请求,请求量加一,统计单位时间内的(比如每1秒时间内的)请求量,如果当前的每秒请求数量大于配置的请求量阈值的80%(本技术实施例对该比例不做具体限定),然后在
远程字典服务(remote dictionary server,redis)中记录高流量访问1次(访问流量统计和计算(高流量)),如果后面的请求量还是维持高流量,每访问1次则高流量的次数加1并缓存至redis集群;如果这个高流量连续次数达到了1000次(本技术实施例对该次数不做具体限定),则进行扩容,也就是把配置的阈值调高,并同步更新至动态云配置平台(更新访问量阈值的配置);如果用户请求时,单位时间内的流量(例如每秒请求数)小于配置的阈值的50%(本技术实施例对该比例不做具体限定),则记录一次低流量(访问流量统计和计算(低流量))并缓存至redis集群,如果低流量连续次数达到500次(本技术实施例对该次数不做具体限定)时,则进行缩容,也就是对这个渠道配置的阈值调低,并同步更新至动态云配置平台(更新访问量阈值的配置)以使得实时获取到最新的配置数据,记录高/低流量的持续大小来实现动态扩缩容功能。支持按照渠道精细化分析监控、流量管控、动态扩容缩容、单实例&集群双模式,提高系统稳定性、给业务赋能。
105.图7是根据本技术实施例的限流处理方法的滑动时间窗口计数方案示意图。如图7所示,基于分布式集群的滑动时间窗口计数法,从动态配置平台准实时获取最新配置数据(轮询间隔2秒,本技术不做限定),动态设置如图7所示的滑块的时间间隔、单位时间内的请求总量。示例的,把时间间隔分片,动态统计单位时间内请求量。例如渠道a限流每秒处理1000个请求,把每1秒作为一个窗口。每1秒移动一次,缓存中保留每次的请求次数。每次移动判断一下总次数是否超出1000限制。时间窗口大小、访问总量都是可以实时动态调整,且每个渠道也可以独立定制这两个参数,可实现各个渠道精准限流能力。
106.图4是根据本技术第四实施例的限流处理方法的分布式集群限流模式示意图。如图4所示,用户通过jsf组件访问应用服务平台的h5页面时,会先通过jsf组件进行兜底的限流,保障平台稳定,以作为第一步的限流策略。如果用户访问流量(即访问量)超过jsf的阈值即达到jsf限流上限,则直接拒绝服务,结束并返回限流码;如果访问量没有超过jsf组件配置的阈值,通过jsf访问具体的业务应用时,先调用应用服务以调用aop切面,通过切面+注解对需要进行渠道精准限流的接口打标,从动态云配置平台ducc拉取限流总开关的配置信息,如果开关打开,即开启服务限流,则使用基于分布式集群的滑动时间窗口计数法按照渠道精细化的统计访问的次数,把这个统计数据会临时放到京东高速缓存jimdb中间件中;因jimdb是分布式集群的资源,计数也是按照集群面试计数,以此实现分布式的按照渠道精准限流能力;对于超出阈值的访问,即流量超限,则进行拒绝服务处理,结束并返回限流码,并按照分钟级别把每个渠道的访问流量数据缓存到jimdb中,示例的,通过进行渠道监控/统计,将监控/统计结果上报给ump(渠道监控)以更新缓存中间件中的相关配置信息,例如,key:接口+渠道标识+时间(分钟)+流量信息缓存到redis;value:分钟请求量。然后启动job定时任务,定时扫码jimdb中的渠道流量数据,把流量信息持久化,最终保存到es集群中,在应用服务平台开放一个历史数据看板,可实现按照渠道精准分析监控,以此更好给业务赋能。对于未超出阈值的访问,即流量未超限,则执行正常访问服务,进行业务处理并响应结果。其中,redis计数具体为:秒级计数:例如,key:接口+渠道标识+读写+秒级时间戳;value:请求量。如果开关未打开,即未开启服务限流,则正常提供服务进行业务处理并响应结果,进而更新动态云配置平台的限流配置信息。
107.图8是根据本技术实施例的限流处理装置的主要单元的示意图。如图8所示,限流处理装置包括接收单元801、执行单元802和切换单元803。
108.接收单元801,被配置成接收业务访问请求,获取对应的渠道标识,以调用渠道标识对应的渠道的限流配置信息,确定对应的限流模式。
109.执行单元802,被配置成根据限流模式判断是否为单实例限流模式,若是,获取渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定渠道对应的单实例进行缩容或扩容,以执行业务访问请求。
110.切换单元803,被配置成若否,则获取渠道对应的各个单实例,切换各个单实例的限流配置信息为分布式集群限流配置信息,以基于切换后的各个单实例执行业务访问请求。
111.在一些实施例中,执行单元802进一步被配置成:响应于更新后的访问量小于预设的缩容访问量阈值,确定渠道对应的单实例的访问量小于预设的缩容访问量阈值的累计次数;响应于确定累计次数达到预设次数阈值,对渠道对应的单实例进行缩容。
112.在一些实施例中,执行单元802进一步被配置成:响应于更新后的访问量大于预设的扩容访问量阈值,确定渠道对应的单实例的访问量大于预设的扩容访问量阈值的累计次数;响应于确定累计次数达到预设次数阈值,对渠道对应的单实例进行扩容。
113.在一些实施例中,接收单元801进一步被配置成:确定接收业务访问请求时的实时访问量,调用限流组件,响应于实时访问量小于限流组件的访问量阈值,调用切面以基于实时访问量判断是否开启服务限流,响应于服务限流开启,执行业务访问请求对应的渠道标识的获取进程。
114.在一些实施例中,切换单元803进一步被配置成:调用时间滑动窗口算法,确定渠道的总访问量,进而临时存储至分布式集群高速缓存中间件中,进而生成定时更新任务;执行定时更新任务,以定时更新分布式集群高速缓存中间件中的总访问量,并将更新的总访问量保存至集群中;对更新后的未超出总访问量阈值的访问量对应的业务访问请求基于分布式算法分配至分布式集群中的对应实例,进而调用对应实例执行分配的业务访问请求;对更新后的超出总访问量阈值的访问量对应的业务访问请求执行进行拒绝服务处理。
115.在一些实施例中,限流处理装置还包括图8中未示出的调整单元,被配置成:实时动态调整时间滑动窗口算法对应的时间窗口大小和总访问量阈值。
116.在一些实施例中,限流处理装置还包括图8中未示出的显示单元,被配置成:基于渠道标识,确定对应的数据看板区域;在数据看板区域显示对应的渠道标识对应的总访问量以及拒绝服务的业务访问请求。
117.需要说明的是,在本技术限流处理方法和限流处理装置在具体实施内容上具有相应关系,故重复内容不再说明。
118.图9示出了可以应用本技术实施例的限流处理方法或限流处理装置的示例性系统架构900。
119.如图9所示,系统架构900可以包括终端设备901、902、903,网络904和服务器905。网络904用以在终端设备901、902、903和服务器905之间提供通信链路的介质。网络904可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
120.用户可以使用终端设备901、902、903通过网络904与服务器905交互,以接收或发送消息等。终端设备901、902、903上可以安装有各种通讯客户端应用,例如购物类应用、网
页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
121.终端设备901、902、903可以是具有限流处理屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
122.服务器905可以是提供各种服务的服务器,例如对用户利用终端设备901、902、903所提交的业务访问请求提供支持的后台管理服务器(仅为示例)。后台管理服务器可以接收业务访问请求,获取对应的渠道标识,以调用渠道标识对应的渠道的限流配置信息,确定对应的限流模式;根据限流模式判断是否为单实例限流模式,若是,获取渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定渠道对应的单实例进行缩容或扩容,以执行业务访问请求;若否,则获取渠道对应的各个单实例,切换各个单实例的限流配置信息为分布式集群限流配置信息,以基于切换后的各个单实例执行业务访问请求。从而可以实现按照渠道精细化分析监控、流量管控、动态扩容缩容、单实例和集群双模式切换,提高每个渠道的限流效果,通过动态扩缩容实现对服务器资源的动态分配,提高系统稳定性,给业务赋能。
123.需要说明的是,本技术实施例所提供的限流处理方法一般由服务器905执行,相应地,限流处理装置一般设置于服务器905中。
124.应该理解,图9中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
125.下面参考图10,其示出了适于用来实现本技术实施例的终端设备的计算机系统1000的结构示意图。图10示出的终端设备仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
126.如图10所示,计算机系统1000包括中央处理单元(cpu)1001,其可以根据存储在只读存储器(rom)1002中的程序或者从存储部分1008加载到随机访问存储器(ram)1003中的程序而执行各种适当的动作和处理。在ram1003中,还存储有计算机系统1000操作所需的各种程序和数据。cpu1001、rom1002以及ram1003通过总线1004彼此相连。输入/输出(i/o)接口1005也连接至总线1004。
127.以下部件连接至i/o接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(crt)、液晶征信授权查询处理器(lcd)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至i/o接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
128.特别地,根据本技术公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本技术公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(cpu)1001执行时,执行本技术的系统中限定的上述功能。
129.需要说明的是,本技术所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以包括但不限
于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
130.附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
131.描述于本技术实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括接收单元、执行单元和切换单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
132.作为另一方面,本技术还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备接收业务访问请求,获取对应的渠道标识,以调用渠道标识对应的渠道的限流配置信息,确定对应的限流模式;根据限流模式判断是否为单实例限流模式,若是,获取渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定渠道对应的单实例进行缩容或扩容,以执行业务访问请求;若否,则获取渠道对应的各个单实例,切换各个单实例的限流配置信息为分布式集群限流配置信息,以基于切换后的各个单实例执行业务访问请求。
133.根据本技术实施例的技术方案,从而可以实现按照渠道精细化分析监控、流量管控、动态扩容缩容、单实例和集群双模式切换,提高每个渠道的限流效果,通过动态扩缩容实现对服务器资源的动态分配,提高系统稳定性,给业务赋能。
134.上述具体实施方式,并不构成对本技术保护范围的限制。本领域技术人员应该明
白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本技术的精神和原则之内所作的修改、等同替换和改进等,均应包含在本技术保护范围之内。

技术特征:
1.一种限流处理方法,其特征在于,包括:接收业务访问请求,获取对应的渠道标识,以调用所述渠道标识对应的渠道的限流配置信息,确定对应的限流模式;根据所述限流模式判断是否为单实例限流模式,若是,获取所述渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定所述渠道对应的单实例进行缩容或扩容,以执行所述业务访问请求;若否,则获取所述渠道对应的各个单实例,切换所述各个单实例的限流配置信息为分布式集群限流配置信息,以基于切换后的各个单实例执行所述业务访问请求。2.根据权利要求1所述的方法,其特征在于,所述确定所述渠道对应的单实例进行缩容或扩容,包括:响应于更新后的访问量小于预设的缩容访问量阈值,确定所述渠道对应的单实例的访问量小于预设的缩容访问量阈值的累计次数;响应于确定所述累计次数达到预设次数阈值,对所述渠道对应的单实例进行缩容。3.根据权利要求1所述的方法,其特征在于,所述确定所述渠道对应的单实例进行缩容或扩容,包括:响应于更新后的访问量大于预设的扩容访问量阈值,确定所述渠道对应的单实例的访问量大于预设的扩容访问量阈值的累计次数;响应于确定所述累计次数达到预设次数阈值,对所述渠道对应的单实例进行扩容。4.根据权利要求1所述的方法,其特征在于,所述在所述获取对应的渠道标识之前,所述方法还包括:确定接收所述业务访问请求时的实时访问量,调用限流组件,响应于所述实时访问量小于所述限流组件的访问量阈值,调用切面以基于所述实时访问量判断是否开启服务限流,响应于服务限流开启,执行所述业务访问请求对应的渠道标识的获取进程。5.根据权利要求1所述的方法,其特征在于,所述基于切换后的各个单实例执行所述业务访问请求,包括:调用时间滑动窗口算法,确定所述渠道的总访问量,进而临时存储至分布式集群高速缓存中间件中,进而生成定时更新任务;执行所述定时更新任务,以定时更新所述分布式集群高速缓存中间件中的所述总访问量,并将更新的所述总访问量保存至集群中;对更新后的未超出总访问量阈值的访问量对应的业务访问请求基于分布式算法分配至分布式集群中的对应实例,进而调用所述对应实例执行分配的业务访问请求;对更新后的超出总访问量阈值的访问量对应的业务访问请求执行进行拒绝服务处理。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:实时动态调整所述时间滑动窗口算法对应的时间窗口大小和总访问量阈值。7.根据权利要求5所述的方法,其特征在于,所述方法还包括:基于所述渠道标识,确定对应的数据看板区域;在所述数据看板区域显示对应的渠道标识对应的总访问量以及拒绝服务的业务访问请求。
8.一种限流处理装置,其特征在于,包括:接收单元,被配置成接收业务访问请求,获取对应的渠道标识,以调用所述渠道标识对应的渠道的限流配置信息,确定对应的限流模式;执行单元,被配置成根据所述限流模式判断是否为单实例限流模式,若是,获取所述渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定所述渠道对应的单实例进行缩容或扩容,以执行所述业务访问请求;切换单元,被配置成若否,则获取所述渠道对应的各个单实例,切换所述各个单实例的限流配置信息为分布式集群限流配置信息,以基于切换后的各个单实例执行所述业务访问请求。9.根据权利要求8所述的装置,其特征在于,所述执行单元进一步被配置成:响应于更新后的访问量小于预设的缩容访问量阈值,确定所述渠道对应的单实例的访问量小于预设的缩容访问量阈值的累计次数;响应于确定所述累计次数达到预设次数阈值,对所述渠道对应的单实例进行缩容。10.根据权利要求8所述的装置,其特征在于,所述执行单元进一步被配置成:响应于更新后的访问量大于预设的扩容访问量阈值,确定所述渠道对应的单实例的访问量大于预设的扩容访问量阈值的累计次数;响应于确定所述累计次数达到预设次数阈值,对所述渠道对应的单实例进行扩容。11.一种限流处理电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。

技术总结
本申请公开了限流处理方法、装置、电子设备及计算机可读介质,涉及计算机技术领域,该方法包括:接收业务访问请求,获取对应的渠道标识,调用渠道标识对应的渠道的限流配置信息,确定对应的限流模式;根据限流模式判断是否为单实例限流模式,若是,获取渠道对应的单实例单位时间内的访问量并更新,进而将更新后的访问量与预设的缩容访问量阈值或预设的扩容访问量阈值进行比对,确定渠道对应的单实例进行缩容或扩容,以执行业务访问请求;若否,则获取渠道对应的各个单实例,切换各个单实例的限流配置信息为分布式集群限流配置信息,以基于切换后的各个单实例执行业务访问请求。从而实现对服务器资源的动态分配,提高系统稳定性,给业务赋能。给业务赋能。给业务赋能。


技术研发人员:吴大帅 刘军飞
受保护的技术使用者:北京京东拓先科技有限公司
技术研发日:2022.03.25
技术公布日:2023/10/7
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐