本发明涉及计算机,具体涉及一种基于服务发现动态权重的方法、系统、设备以及存储介质。
背景技术:
1、在分布式系统中,多实例或多负载较为常见,通常一个服务不止一个实例,且服务实例数是可以动态伸缩的,在伸缩过程中,一些动态缓存或静态元素在扩容过程中,不能很好地对外服务,因此,需要使用到弹性扩容的服务,在准备程度不佳的时候,通过低流量即低权重方式完成系统的初始化,不间断地加大权重,以致最后达到和其他实例相同的权重;然而,现有的分布式服务中,提供服务的进程启动完成后,有些懒加载或者动态缓存由于还没正式接收外界的访问,其缓存并没有生效,使得在高并发场景下,瞬间的流量击穿新实例的缓存的概率会变得畸高,从而击垮该实例,该情况下,会非常容易造成该链路大量的请求延时、超时,甚至被挂起的情况,导致整个服务的可用性大大降低的问题。因此,需要对该问题进行研究改进。
技术实现思路
1、针对现有技术的不足,本发明提出一种基于服务发现动态权重的方法、系统、设备以及存储介质,可以在业务请求高峰期实现平滑扩容,对用户影响较低;同时,在平时业务低峰期也可以回收资源,大大节约成本,提高扩容的效果。
2、本发明第一方面公开了一种基于服务发现动态权重的方法,在微服务体系中包括网关模块和多个服务模块,执行以下步骤,
3、s1:各服务模块新增负载权重值计算,用于动态上报当前服务模块的负载情况;
4、s2:在每个服务模块上均设有与之对应的注册中心,所述注册中心实时更新所述服务模块所对应的负载权重值,用于所述服务模块中各微服务实例的流量动态配置;
5、s3:网关模块根据其可调度的所有服务模块相对应的注册中心,分别设计并引入定时触发器,周期性采集各注册中心的负载权重值;
6、s4:基于s3,网关模块对所有注册中心的负载权重值进行流量分配计算;
7、s5:网关模块将接收到的服务请求,根据各实例的流量分配情况分发给对应服务模块。
8、在一个可选的实施例中,s2中,所述服务模块的负载权重值更新包含所有微服务实例负载权重值。
9、在一个可选的实施例中,s5中,流量分配包括流量的比例和服务请求次数。
10、在一个可选的实施例中,s1中,所述服务模块的负载权重值上报的时间间隔为25-35s。
11、在一个可选的实施例中,s1中,所述负载权重值的取值为有限阶梯式数值。
12、本发明第二方面公开了一种基于服务发现动态权重的系统,
13、在微服务体系中包括网关模块和多个服务模块,其中,
14、各所述服务模块新增负载权重值计算,用于动态上报当前服务模块的负载情况;
15、在每个所述服务模块上均设有与之对应的注册中心,所述注册中心实时更新所述服务模块所对应的负载权重值,用于所述服务模块中各微服务实例的流量动态配置;
16、所述网关模块根据其可调度的所有服务模块相对应的所述注册中心,分别设计并引入定时触发器,周期性采集各所述注册中心的负载权重值;
17、所述网关模块对所有注册中心的负载权重值进行流量分配计算;
18、所述网关模块将接收到的服务请求,并根据各实例的流量分配情况分发给对应服务模块。
19、本发明第三方面公开了一种基于服务发现动态权重的设备,包括:
20、至少一个处理器,以及,
21、与所述至少一个处理器通信连接的存储器;其中,
22、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本发明第一方面公开的任一项所述的的基于服务发现动态权重的方法。
23、本发明第四方面公开了一种计算机可读存储介质,
24、所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如本发明第一方面公开的任一项所述的基于服务发现动态权重的方法。
25、与现有技术相比,本发明具有以下优点:
26、本发明中,服务模块通过注册中心实时向网关模块更新其负载权重值,在定时触发器的辅助下,网关模块周期性采集各注册中心的最新负载权重值,并对其进行流量分配计算,即,计算出各服务模块需要用的流量,从而更新所有服务模块的各微服务实例的流量动态配置,最后将接收到的服务请求根据各实例的流量分配情况分发给对应服务模块,采用本方案扩容后的微服务系统,其吞吐量不会发生明显下降,同时接口耗时亦没有明显增加,较好地达到了及时扩容的效果;而扩容期间,动态权重设置也较之前的设置有较明显的提高,能够为用户带来较佳的体验感。
1.一种基于服务发现动态权重的方法,其特征在于,在微服务体系中包括网关模块和多个服务模块,执行以下步骤,
2.根据权利要求1所述的一种基于服务发现动态权重的方法,其特征在于,s2中,所述服务模块的负载权重值更新包含所有微服务实例负载权重值。
3.根据权利要求1所述的一种基于服务发现动态权重的方法,其特征在于,s5中,流量分配包括流量的比例和服务请求次数。
4.根据权利要求1所述的一种基于服务发现动态权重的方法,其特征在于,s1中,所述服务模块的负载权重值上报的时间间隔为25-35s。
5.根据权利要求1所述的一种基于服务发现动态权重的方法,其特征在于,s1中,所述负载权重值的取值为有限阶梯式数值。
6.一种基于服务发现动态权重的系统,其特征在于,在微服务体系中包括网关模块和多个服务模块,其中,
7.一种基于服务发现动态权重的设备,其特征在于,包括:
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1至5任一项所述的基于服务发现动态权重的方法。