关于nacos的保护阈值进行流量控制

springCloudalibaba微服务里面,通常我们作为流量洪峰控制是用sentinel,那nacos这里的保护阈值也简单了解下这个功能

 默认是0,代表不启用,这里值通常为0-1,表示百分比

即一旦流量达到这个阈值,超出阈值部分的请求将不再分配给该服务,例:某个服务有3个实例,每个实例能承受10W的请求,如果一旦超出这个请求量,那多出来的请求会分配给永久存在但可能不健康的实例,为了就是保护这个存活的实例,不至于请求太多导致不可用

 将某个服务设置为永久实例的配置如上图,默认是true即非永久实例,设置为false表示设置为永久实例

如上图所示就是这个服务下有三个实例,而且都是非临时实例(永久实例),假如该服务的保护阈值设置0.5。

1、正常情况下,1/3≈0.33,那么所有的请求到来,0.33<0.5,那么请求就会很均衡的分配到三个实例中处理,

2、如果这三个实例有一个挂掉了,那1/2=0.5,健康的两个实例一样能正常处理所有的请求(此时请求不会到达那个挂掉的实例),

3、如果这三个实例挂掉2个,只剩下1个,此时,按理说如果没有设置保护阈值,会全部请求到达那个健康的1个实例,可如果这个实例的保护阈值为0.5<1,那么就会触发这个保护,因此请求就不会每次都到这个健康的实例,为了保护服务可用,它就会把一些请求分配给那些不健康的永久实例,为了就是保护服务的整体可用,哪怕会让一些请求失败。

情况1如下:

 

  

 

 情况2如下:

 

 

 情况3如下:

 

 

 可以将失败的500请求封装成好理解的内容,比如服务器正忙,请稍后重试等这样的友好提示

 这个也算是一个流量处理的简单方案吧,但一般springCloudAlibaba一般不采用它,因为有更好的流量控制组件

 

以上只是学习笔记!

posted @ 2024-09-18 15:11  多多指教~  阅读(157)  评论(0编辑  收藏  举报