[发明专利]一种微服务治理系统和方法有效
申请号: | 202110713888.3 | 申请日: | 2021-06-25 |
公开(公告)号: | CN113382080B | 公开(公告)日: | 2023-03-28 |
发明(设计)人: | 李超;杨倬;石会昌;杨培钦 | 申请(专利权)人: | 中关村智慧城市产业技术创新战略联盟 |
主分类号: | H04L47/10 | 分类号: | H04L47/10;H04L47/215;G06F11/07 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 张乾桢 |
地址: | 100080 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 微服 治理 系统 方法 | ||
1.一种微服务治理方法,其特征在于,包括如下步骤:
步骤1、负载均衡步骤:基于负反馈调节的调整机制,即统计各个服务器节点的性能,计算出其性能的压力情况和权重情况,根据这两个值来调整该服务器节点的权重,以实现动态的负载均衡权重;
步骤2、链路追踪步骤:通过snowflake算法生成链路追踪的标识,将该标识隐式传递到整个链路中,通过消息队列接收该标识,并存储至数据库中,得以完整得知微服务拓扑调用网络中的调用链路;
步骤3、服务限流步骤:以触发性的方法,渐进式的异步更新令牌数量,以实现集群级别限流,使用探活变量,使得令牌桶能够自动退化为单机模式;
步骤4、熔断降级步骤:采用自动探活重连的分布式熔断方法,集群熔断器收集各实例的请求状态,并在集群熔断器内部持有熔断状态的状态机,根据请求状态切换状态机到关闭、半开启和开启状态,以实现分布式集群熔断;
所述步骤1中,负反馈调节的动态调整方法如下:
(1.1)使用Linux系统的定时任务cron定期对集群中各个节点的各项指标采集,然后输出到数据库中,以便后期计算;
(1.2)在负载均衡服务器的本地内存维护一份权重,执行时的策略和固定权重的负载均衡算法一致,还设置有一个异步的定时任务,用于定时调整各个节点权重的值,并将其刷入本地内存,完成权重的动态调整,调整公式如下:
公式1:
公式2:L(Ni)=R1Ci+R2Mi+R3Pi+R4Ti
公式3:
公式4:
公式5:W(Ni)′=W(Ni)+W(Ni)×a(r(L)-r(W))
其中,Ri表示权重系数,R1表示进程数,R2表示响应时间,R3表示CPU利用率,R4表示内存利用率的权重系数,Ci为该服务器节点CPU利用率,Mi为该节点内存利用率,Pi为该节点线程比值,Ti为该节点响应时间比值;集群中任意一个节点N的负载情况,表示为L(Ni),n为节点N的数量,r(L)是该节点的机器负载占总集群机器负载的比值,r(W)是该节点权重比值,W(Ni)为该节点的权重;a是动态调整的变化因子;W(Ni)′是调整后的服务器节点权重;。
2.根据权利要求1所述微服务治理方法,其特征在于:所述步骤2链路追踪的过程如下:
(2.1)基于整个调用链路和链路中每次远程方法调用的两层结构,构造链路追踪;
(2.2)链路追踪标识的生成:使用snowflake算法来构建分布式的全局唯一ID;
(2.3)链路追踪标识的传递:使用线程本地存储变量来实现隐式传递,然后异步收集链路数据。
3.根据权利要求1所述微服务治理方法,其特征在于:所述步骤3中使得令牌桶能够自动退化为单机模式,采用触发式令牌桶集群限流的过程如下:
(3.1)在redis中持有一个令牌桶,定义令牌桶的大小和令牌产生的速度;当服务调用者进行服务请求时,首先申请令牌,此时令牌桶先对比当前时间和下一次能请求到令牌的时间,再计算当前产生的令牌数,进行限流控制;
(3.2)使用lua语言编写脚本计算令牌桶,计算公式如下:
公式7:
公式8:expect_tokenCount=permits-tokenCount
其中permits是请求间隔内产生的令牌数,timestamp为当前时间戳;lastTimestamp是上一次远程方法调用记录的时间戳,slope是令牌的产生速度,expect_tokenCount是所剩令牌数量,tokenCount是本次请求的令牌数,通过比较所剩令牌数量的正负,判断远程方法调用有没有达成服务限流;
(3.3)微服务的每个节点增加一个限流的降级配置,该配置默认关闭,当与服务器失联的情况下,微服务节点会将限流的降级配置开启,此时不再使用分布式限流方案,而是改为在本机维护令牌桶,切换为单机限流模式。
4.根据权利要求1所述微服务治理方法,其特征在于:所述步骤4中,自动探活重连的分布式熔断方法如下:
(4.1)本系统首先维护一个熔断状态,实例从配置中读取到熔断的阈值,然后统计远程方法调用的成功率,与熔断阈值比较;当熔断器关闭时,表明远程方法调用处于正常状态,服务提供者可以继续正常提供服务;当熔断器打开时,说明远程方法调用失败的情况很多,服务不可用,为避免影响下游,需要降级处理;
(4.2)服务的消费者,从集群熔断器拉取当前的熔断配置,得知当前的熔断器状态,如果是关闭的,则不执行远程方法调用,直接返回设置的fallback的结果;如果熔断器允许执行远程方法调用,则调用后,服务的提供者上报调用的结果,这样集群熔断器得以统计请求失败和超时的比例,然后更新当前的熔断状态;
(4.3)分布式熔断器的状态机不止有开启和关闭两种状态,在这两种状态之外,还存在个半开启状态;当服务已经进入熔断状态,一定时间后,下游服务的提供者,提供服务的能力可能已经恢复,则熔断器进入半开启状态,即此时允许部分流量的进入;半开启状态允许一部分流量进入,对于这一部分允许进入的流量,会尝试进行远程方法调用,然后进行调用成功率的统计,如果调用成功率高于阈值,说明此时熔断的下游已经恢复,则继续提供服务,那么系统不再熔断;如果调用成功率低于阈值,说明下游还未恢复,为避免对下游的影响,熔断器重新开启。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中关村智慧城市产业技术创新战略联盟,未经中关村智慧城市产业技术创新战略联盟许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110713888.3/1.html,转载请声明来源钻瓜专利网。