目录
一、初识Sentinel(哨兵)
1.1 雪崩
微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。
解决雪崩问题的常见方式有四种:
- 超时处理:设定超时时间,请求超过一定时间没响应就返回错误信息,不会无休止等待
- 舱壁模式:限定每个业务能使用的线程数,避免耗尽tomcat的资源,也叫线程隔离。
- 熔断降级:断路器统计业务执行的异常比例,超出阈值则会熔断该业务,拦截访问该业务
- 流量控制:限制业务访问的QPS(每秒种处理的请求数量),避免服务因流量的突增而故障。
Sentinel |
Hystrix |
|
隔离策略 |
信号量隔离 |
线程池隔离/信号量隔离 |
熔断降级策略 |
基于慢调用比例或异常比例 |
基于失败比率 |
实时指标实现 |
滑动窗口 |
滑动窗口(基于 RxJava) |
规则配置 |
支持多种数据源 |
支持多种数据源 |
扩展性 |
多个扩展点 |
插件的形式 |
基于注解的支持 |
支持 |
支持 |
限流 |
基于 QPS,支持基于调用关系的限流 |
有限的支持 |
流量整形 |
支持慢启动、匀速排队模式 |
不支持 |
系统自适应保护 |
支持 |
不支持 |
控制台 |
开箱即用,可配置规则、查看秒级监控、机器发现等 |
不完善 |
常见框架的适配 |
Servlet、Spring Cloud、Dubbo、gRPC 等 |
Servlet、Spring Cloud Netflix |
Sentinel官方网站:home | Sentinel
下载对应的jar包并允许,默认端口为8080
访问localhost:8080,默认的账户和密码都是sentinel,进入如下界面
如果要修改Sentinel的默认端口、账户、密码,可以通过下列配置:
配置项 |
默认值 |
说明 |
server.port |
8080 |
服务端口 |
sentinel.dashboard.auth.username |
sentine |