分布式限流框架Sentinel
Sentinel是面向分布式服务架构的轻量级流量控制组件,主要以流量为关注点,从限流、网络流量整形、服务降级等多个方向维护微服务的稳定性。
服务熔断与降级
在微服务架构中,服务拆分粒度细,请求链路长,因此用户发起一个请求,需要调用多个微服务才能完成响应。
如某个服务因网络延迟或者请求超时等原因不可用,就会导致当前请求阻塞,如果某个链路上依赖服务不可用时,出现请求堆积情况,可能导致雪崩效应。所以服务熔断是用来解决这个问题的方案。
服务熔断:某个服务提供者无法正常为调用者提供服务,比如服务异常、请求超时等,为了防止系统出现雪崩效应,暂时把出现故障的接口隔离出来,断开与外部接口的联系,当触发熔断后,一段时间内该服务调用请求都会直接失败或者返回规定好的数据,直接到服务正常调用关闭熔断状态。
Sentinel的特性
- 应用于秒杀、消息削峰填谷、集群流量控制等业务场景
- 实时监控,在控制台能查看接入应用机器秒级数据
- 开源生态支持:Sentinel提供开箱即用与其他开源框架整合,只需要引入相关的依赖并进行配置即可整合Sentinel
- SPI扩展支持:可通过扩展点来定制化限流规则、动态数据源适配等需求
Sentinel组成
Sentinel分两部分组成
- 控制台:基于SpringBoot开发,打包后可直接运行,不需要部署Tomcat应用容器
- 核心库:不依赖任何框架,能够运行于所有Java运行时环境
Sentinel Dashboard的部署
Sentinel提供一个轻量级的开源控制台,支持机器发现,以及健康情况管理、监控、规则管理和推送的功能。
Sentinel源码地址:github.com/alibaba/Sen…
启动控制台命令
java -Dserver.port=9999 -Dcsp.sentinel.dashboard.server=localhost:9999 -Dproject.name=
sentinel-dashboard -jar sentinel-dashboard.jar
参数含义如下
- -Dserver.port:指定Sentinel控制台的访问端口,默认是8080
- -Dcsp.sentinel.dashboard.server:指定Sentinel bashboard控制台的IP地址和端口,设置的目的是把自己的限流数据暴露到监控平台
- -Dproject.name:设置项目名称
Sentinel控台自从1.6.0开始引入基本的登录功能,默认用户名和密码是sentinel