文章目录
- 1. 雪崩问题
- 2. 解决方案
- 3. 服务保护技术对比
- 4. 安装 Sentinel
- 4.1 启动控制台
- 4.2 客户端接入控制台
- 参考资料:
1. 雪崩问题
- 微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。
- 动图演示:
- 在微服务系统中,服务A依赖于服务B、服务D
- 某一时刻服务D故障,导致依赖于服务D的服务A的请求也无法及时释放
- 随着时间积累,服务A的tomcat连接数被故障的请求占满,导致服务A也不可用
- 以此类推,导致微服务系统中此链路的所有服务都不可用
- 看起来就和雪崩一样,从某一块雪滑落扩展到整个山坡。
2. 解决方案
- 超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待。
- 舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。
- 熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。
- 流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。
3. 服务保护技术对比
4. 安装 Sentinel
- Sentinel是阿里巴巴开源的一款微服务流量控制组件。
- 可以按照官方文档操作,都有详细步骤。
- 官网地址(可能打不开…)
4.1 启动控制台
- 下载jar包
- 启动服务
java -jar sentinel-dashboard-1.8.8.jar
- 登录控制台
访问 http://localhost:8080 地址,
用户名、密码 都是 sentinel
4.2 客户端接入控制台
- 引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
- 配置修改
sentinel:
transport:
dashboard: localhost:8080
3. 启动服务测试
访问接口,我这里有个test的接口
在浏览器调用后,再查看sentinel控制台,就可以看到
参考资料:
https://www.bilibili.com/video/BV1ou411a75C/?spm_id_from=333.337.search-card.all.click&vd_source=2ff628f5c812d7a3a5d93833fb99badf