面试问到Sentinel看这一篇就够了

一、Sentinel服务保护框架介绍

为什么接口访问太多会崩

QPS=1每秒只能访问一次
线程数=信号量隔离,就是接口最多使用多少个线程

仪表盘?

快速失败

Sentinel默认情况限流规则没有持久化,要持久化要使用zk、nacos、阿波罗

在网关里做限流,要整合网关

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

黑白名单
对IP实现限流/熔断机制
服务降级
服务隔离机制

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

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

服务雪崩:默认的情况下,tomcat/jetty服务器只有一个线程池处理所有的接口请求。在高并发的情况下,同一个接口访问占用了所有的线程池连接,导致其他接口不可以访问

服务雪崩解决方案:
服务隔离机制:线程池隔离或者信号量隔离机制
线程池隔离:每个接口都有自己独立的线程池维护我们的请求,每个线程池互不影响,就是每个接口有独立使用一个线程池,缺点:占用服务器内存非常大
信号量隔离:设置允许我们的某个接口有一个阈值的线程数量去处理接口,如果超出改线程数量则拒绝访问,有点类似服务限流

三、Sentinel与hytrix的区别?

四、限流配置两种方案

1、手动使用代码配置
2、Sentinel控制台形式配置
3、默认情况下Sentinel不对数据持久化,需要自己独立持久化

实现的步骤:
1、创建流控(限流)规则

五、sprngboot整合控制台

控制台配置
下载对应Sentinel-Dashboard
https://github.com/alibaba/Sentinel/releases/tag/1.7.1 运行即可。

运行执行命令
java -Dserver.port=8718 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dproject.name=sentinel-dashboard -Dcsp.sentinel.api.port=8719 -jar

账号密码都是sentinel
登录地址127.0.0.1:8718

springboot配置
1、yml 配置 sentinel
2、默认资源名称是接口地址 比如/xxx
3、接口加注解,限流友好提示blockHandler

六、

七、服务熔断、服务降级

服务熔断:接口调用时间(服务响应时间)超过指定时间
服务降级:一段时间内不能再次访问这个接口
接口调用时间(服务响应时间)超过指定时间,一段时间内不能再次访问这个接口

八、sentinel规则数据持久化的四种方案

1、Nacos分布式配置中心:有界面,也不用重启服务器,推荐
2、携程阿波罗:有界面,也不用重启服务器,推荐
3、ZK,没有界面,不推荐
4、存放在本地文件:数据容易数据不一致,不推荐?

配置的限流在服务器重启后规则会被清空

Sentinel启动的时候读取naocs上的流控规则到内存中

整合nacos只要yml配置一下就好了,规则都写在nacos上,整合之后不能自己在代码里去配置流控规则,否则会覆盖nacos上的规则

九、sentinel整合gateway实现限流

因为访问的时候都是通过网关访问的

1、yml配置
2、加两个配置类,一个整合配置,一个规则配置
3、引入整合依赖
4、gateway中排除冲突web依赖包
4、重写默认的提示方法

十、对服务实现动态熔断降级

达到阈值,走服务降级fallback方法,不会真是的执行我们的业务逻辑

服务降级三种策略:
1、rt(平均响应时间):一秒内接口的访问响应时间超过指定阈值,则触发服务熔断,调用服务降级方法,指定时间(时间窗口 秒)内,不能够再次访问接口,一秒内访问五次,五次的平均响应时间超过阈值,最大阈值为4.9秒,要改最大阈值要去改配置
2、异常比例:一秒内请求出现异常的比例超过指定阈值,服务降级,时间窗口(秒)-
3、异常次数:一分钟内请求出现异常的次数超过指定阈值,服务降级,时间窗口(分钟)-

可以同时使用多个策略

十一、

十二、

十三、

十四、

十五、

十六、

十七、

十八、

十九、

二十、

二十一、

二十二、

二十三、

二十四、

二十五、

二十六、

二十七、

二十八、

二十九、

三十、

发布了52 篇原创文章 · 获赞 2 · 访问量 1862

猜你喜欢

转载自blog.csdn.net/qq_42972645/article/details/104792317