一、初识Sentinel
1、雪崩问题及解决方案
雪崩问题
微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。
解决雪崩问题的常见方式有四种:
1、超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待
2、舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。


3、熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。
4、流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。
总结:
什么是雪崩问题?
•
微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。
如何避免因瞬间高并发流量而导致服务故障?
•
流量控制
如何避免因服务故障引起的雪崩问题?
•
超时处理
•
线程隔离
•
降级熔断
2、服务保护技术对比
Sentinel |
Hystrix |
|
隔离策略 |
信号量隔离 |
线程池隔离/信号量隔离 |
熔断降级策略 |
基于慢调用比例或异常比例 |
基于失败比率 |
实时指标实现 |
滑动窗口 |
滑动窗口(基于 RxJava) |
规则配置 |
支持多种数据源 |
支持多种数据源 |
扩展性 |
多个扩展点 |
插件的形式 |
基于注解的支持 |
支持 |
支持 |
限流 |
基于 QPS,支持基于调用关系的限流 |
有限的支持 |
流量整形 |
支持慢启动、匀速排队模式 |
不支持 |
系统自适应保护 |
支持 |
不支持 |
控制台 |
开箱即用,可配置规则、查看秒级监控、机器发现等 |
不完善 |
常见框架的适配 |
Servlet、Spring Cloud、Dubbo、gRPC 等 |
Servlet、Spring Cloud Netflix |
3、Sentinel介绍和安装
认识Sentinel
Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:home | Sentinel
Sentinel 具有以下特征:
•
丰富的应用场景
:
Sentinel
承接了阿里巴巴近
10
年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
•
完备的实时监控
:
Sentinel
同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至
500
台以下规模的集群的汇总运行情况。
•
广泛的开源生态