SpringCloud Alibaba Sentinel概解

sentinel中文名是卫兵,其出现意义其实是为了去应对类似于雪崩问题这样的服务故障。

服务雪崩

微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。

微服务之间依赖是很复杂的,因为某一个服务故障很可能导致和它直接依赖和间接依赖的服务长时间堵塞,最终导致整个服务瘫痪。

雪崩解决方案1.超时处理

设定请求超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待。只能缓解雪崩问题,因为释放请求速度可能小于请求速度,最终tomcat链接还是会被抢占完。

雪崩解决方案2.舱壁模式

限定每个业务使用的线程数,避免耗尽整个Tomcat的资源,因此也叫线程隔离。

这个模式也叫线程隔离模式,它其实避免了整个Tomcat资源耗尽的这种情况,只不过资源可能会有一些浪费

 

雪崩解决方案3.熔断降级

由断路器统计业务执行的异常比例,如果超出阈值会熔断该业务,拦截访问该业务的一切请求,这种方案可以解决资源浪费问题.

雪崩解决方案4.流量控制

使用Sentinel限制业务访问的QPS,避免服务因流量的突增而故障。

 Sentinel PK Hystrix 

Hystrix是Spring Cloud 刚刚流行的几年推荐大家使用的,它由Netflix 公司出品,不过随着Netflix公司宣布停止对Hystrix的升级和维护,现在就逐渐没落了。

人们也在尝试去寻找一个新的方案,而在这个时候,阿里巴巴就开源了一个项目,叫Sentinel, 并且已经成为SpringCloudAlibaba 当中的一个服务保护组件,现在已经被广泛的应用在国内的互联网公司。

隔离策略

熔断降级

都是统计异常的比例,然后触发了异常比例的阈值就熔断,只不过在Sentinel里它可以除了统计异常请求的比例,它还可以统计慢调用的比例。

何为慢调用?就是一个业务,它大多数情况下耗时都比较久,那这个业务可能就会有问题,可能会拖慢整个服务,有可能把服务拖垮了,所以可以把它熔断了。

限流

限流就是我们讲的流量控制,在Sentinel里,它支持基于QPS,还有调用关系的这种限流,甚至还可以针对热点的参数去做限流。这限流的方式多种多样。

而Hystrix里面,它没有专门的一个限流的控制,它其实就是基于这个线程池的,你的线程池设置成10,那你最多不就是10了嘛,是基于这种方式来限流的。所以这种限流的能力相对比较弱一点。

流量整形

流量整形就是让突发流量变成稳定的匀速的流量。那怎么做到的呢?

它可以支持慢启动,也就是预热模式,还有匀速排队等等。

所以这种方式让波动的请求变成匀速的请求,那我微服务处理起来就会更加的轻松。

在Hystrix里是不支持这样的功能的。

  • warm up:预热模式,与快速失败相似,都是对超出阈值的请求同样是拒绝并抛出异常。但它们不同的地方在于这种模式阈值会动态变化,预热模式从一个较小值逐渐增加到最大阈值。
  • 排队等待:它前面的模式不一样,它不会立即抛出异常,而是让所有的请求按照先后次序排队执行,两个请求的间隔不能小于指定时长,如果小于,就会被拒绝并抛出异常。

 

参考链接:https://developer.aliyun.com/article/1172304?spm=a2c6h.24874632.expert-profile.54.63455d31zMDKZR#slide-27

posted @ 2023-03-05 22:39  HexThinking  阅读(21)  评论(0编辑  收藏  举报