文章目录
- [1. 雪崩问题](#1. 雪崩问题)
- [2. 解决方案](#2. 解决方案)
- [3. 服务保护技术对比](#3. 服务保护技术对比)
- [4. 安装 Sentinel](#4. 安装 Sentinel)
-
- [4.1 启动控制台](#4.1 启动控制台)
- [4.2 客户端接入控制台](#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 客户端接入控制台
- 引入依赖
xml
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
- 配置修改
yaml
sentinel:
transport:
dashboard: localhost:8080
- 启动服务测试
访问接口,我这里有个test的接口
在浏览器调用后,再查看sentinel控制台,就可以看到