SpringCloudAlibaba基础分享(九)

191 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

image.png

上期讲到网关gateway ,这一期分享一下sentinel的限流,降级

Image.png

  • QPS,阈值:1,限制每秒访问一次
  • 线程数:超出多少个线程,直接拒绝处理请求

服务接口保护有哪些方案?

1、黑名单和白名单

2、对IP实现限流、熔断机制

4、服务降级

5、服务隔离

Image.png

服务限流:目的为了保护我们的服务,在高并发的情况下,如何客户端的请求服务器端到底一定的极限(设置阈值),请求的数量超出我们的设置的阈值,开启我们的自我保护机制。直接执行我们的服务降级的方法,不会执行我们的业务逻辑,走本地的falback方法。

服务降级:在高并发的情况下,为了防止用户一直等待,采用限流或者熔断的机制,保护我们的服务,不会执行我们的业务逻辑,走本地的falback方法。返回一个友好的提示返回客户端。

比如:访问一个接口非常慢,一致在转圈,提示当前排队人数过多,请稍后重试。

服务雪崩:默认的情况下,tomcat服务器只会有一个线程池处理所有接口的请求。

这样的话就是在高并发的情况下,如果客户端所有的请求都堆积到同一个接口上,那么会产生该服务器的所有的线程处理该接口。可能会导致其它接口无法访问,短暂没有线程处理。

如何证明我们的tomcat服务器只有一个线程池?

打印的线程池名称:线程池名称+线程id名称

服务的雪崩解决方案:

服务的隔离机制:线程池隔离,信号量隔离机制。

线程池隔离:每个接口都有自己独立的线程池维护我们的请求,线程池互不影响。(缺点占用服务器内存非常大)

信号量隔离:设置最多允许我们某个接口有一定阈值的线程数量处理我们的接口。如果超出线程数量,则拒绝访问。

Image.png