持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情
上期讲到网关gateway ,这一期分享一下sentinel的限流,降级
- QPS,阈值:1,限制每秒访问一次
- 线程数:超出多少个线程,直接拒绝处理请求
服务接口保护有哪些方案?
1、黑名单和白名单
2、对IP实现限流、熔断机制
4、服务降级
5、服务隔离
服务限流:目的为了保护我们的服务,在高并发的情况下,如何客户端的请求服务器端到底一定的极限(设置阈值),请求的数量超出我们的设置的阈值,开启我们的自我保护机制。直接执行我们的服务降级的方法,不会执行我们的业务逻辑,走本地的falback方法。
服务降级:在高并发的情况下,为了防止用户一直等待,采用限流或者熔断的机制,保护我们的服务,不会执行我们的业务逻辑,走本地的falback方法。返回一个友好的提示返回客户端。
比如:访问一个接口非常慢,一致在转圈,提示当前排队人数过多,请稍后重试。
服务雪崩:默认的情况下,tomcat服务器只会有一个线程池处理所有接口的请求。
这样的话就是在高并发的情况下,如果客户端所有的请求都堆积到同一个接口上,那么会产生该服务器的所有的线程处理该接口。可能会导致其它接口无法访问,短暂没有线程处理。
如何证明我们的tomcat服务器只有一个线程池?
打印的线程池名称:线程池名称+线程id名称
服务的雪崩解决方案:
服务的隔离机制:线程池隔离,信号量隔离机制。
线程池隔离:每个接口都有自己独立的线程池维护我们的请求,线程池互不影响。(缺点占用服务器内存非常大)
信号量隔离:设置最多允许我们某个接口有一定阈值的线程数量处理我们的接口。如果超出线程数量,则拒绝访问。