在微服务架构中,业务高峰时段,请求过多可能导致直接查询数据库,造成雪崩等事故。
一、雪崩问题
微服务调用链路中某个服务故障,引起整个链路中所有服务不可用。
解决方案
1)超时处理
设置超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待。
2)仓壁模式/线程隔离
设定每个业务能使用的线程数,避免耗尽整个Tomcat的资源
3)熔断降级
由断路器统计业务执行的异常比例,若超出阈值,则会熔断改业务,拦截访问该业务的一切请求
4)流量控制
限制业务访问的QPS,避免服务因流量突增加故障
二、服务比较
Sentinel 与 Hystrix 服务保护对比
指标 | Sentinel | Hystrix |
---|---|---|
隔离策略 | 信号量隔离 | 线程池/信号量隔离 |
熔断降级策略 | 基于慢点用比例或异常比例 | 基于失败比率 |
实时指标实现 | 滑动窗口 | 滑动窗口-基于RxJava |
规则配置 | 支持多数据源 | 支持多数据源 |
扩展性 | 多个扩展点 | 插件的形式 |
基于注解的支持 | 支持 | 支持 |
限流 | 基于QPS,基于调用关系限流 | 有限的支持 |
流量整形 | 支持慢启动、匀速排队模式 | 不支持 |
系统自适应保护 | 支持 | 不支持 |
控制台 | 开箱即用、可配置规则、秒级监控 | 不完善 |
框架适配 | Spring Cloud、Dubbo | Spring Cloud Netflix |
本篇主要记录在虚拟机上安装的过程,方便备查。
三、安装与访问
第一步、下载安装
推荐下载 地址 Sentinel
进入下载页面,可下载 jar 包,这里选择的版本是 sentinel-dashboard-1.8.6.jar
第二步、运行
在jar所在目录下,运用 Java包启动命令来启动。
java -jar .\sentinel-dashboard-1.8.6.jar
控制台打印信息如下所示。
第三步、访问登录
访问地址 http://localhost:8080,默认账户:sentinel; 默认密码:sentinel;启动界面如下图所示。
进入页面后,页面控制台如下图所示。