- Sentinel简介
Sentinel被称为分布式系统的流量防守兵,是阿里开源流控框架,从服务限流、降级、熔断等多个维度爱护服务,Sentinel提供了简洁易用的控制台,能够看到接入利用的秒级数据,并且能够在控制台设置一些规定爱护利用,它比Hystrix反对的范围广,如Spring Cloud、Dubbo、gRPC都能够整合。
资源是Sentinel最要害的概念,遵循Sentinel API的开发标准定义资源,就能将利用爱护起来。
而规定能够通过控制面板配置,也能够和资源联结起来,规定能够在控制台批改并且即时失效。
名词解释:
限流:不能让流量一窝蜂的进来,否则可能会冲垮零碎,须要限载流量,个别采纳排队的形式有序进行
对应生存中的小例子:比方在一个景区,个别是不会让所有人在同一时间进去的,会限度人数,排队进入,让景区内人数在一个可控范畴,因为景区的基础设施服务不了那么多人。
降级:即便在零碎出故障的状况下,也要尽可能的提供服务,在可用和不可用之间找一个平衡点,比方返回敌对提醒等。
例如当初稍有规模的电商零碎,为了给用户提供个性化服务,个别都有举荐零碎,假如当初举荐零碎宕机了,不应该在举荐商品一栏不给用户展现商品,反而能够升高一点要求,保障给用户看到的是敌对界面,给用户返回一些筹备好的静态数据。
熔断:间接回绝拜访,而后返回敌对提醒,个别是依据申请失败率或申请响应工夫做熔断。
熔断好比家里的保险盒,当线路过热时,就会跳闸,免得烧坏电路。
- Sentinel和同类产品比照
Sentinel、Hystrix、Resilience4j的异同
根底个性SentinelHystrixResilience4j限流QPS、线程数、调用关系无限的反对Rate LImiter注解的反对反对反对反对动静规定配置反对多种数据源反对多种数据源无限反对实时统计信息滑动窗口滑动窗口Ring Bit Buffer熔断降级策略均匀响应工夫、异样比例、异样数异样比例均匀响应工夫、异样比例控制台可配置各种规定,接口调用的秒级信息,机器发现等简略监控不提供控制台,可对接其它监控平台流量整形反对预热、排队模式不反对简略的Rate Limiter模式零碎自适应限流反对不反对不反对扩展性多个扩大点插件的模式接口的模式罕用适配框架Servlet、Spring Cloud、Dubbo、gRPC等Servlet、Spring Cloud、NetflixSpring Boot、Spring Cloud
- 下载和运行
github地址
github.com/alibaba/Sen…
能够间接下载jar包运行jar包,也能够下载源码编译运行
因为它是springboot我的项目,下载jar包后间接运行jar包即可
java -jar sentinel-dashboard-1.8.3.jar
默认端口8080,如果须要批改,能够减少-Dserver.port参数,启动命令批改为java -jar -Dserver.port=9000 sentinel-dashboard-1.8.3.jar ,即可将程序端口改为9000
默认账号sentinel,默认明码sentinel,登录后页面是空白的,是因为sentinel采纳懒加载的形式,只有证正应用它,性能才会展现进去
我的项目集成Sentinel
4.1 创立提供者服务
pom.xml
<dependencies><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <!-- 衰弱监控 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- 服务注册/服务发现须要引入的 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- nacos配置核心依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!-- sentinel组件依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
</dependencies>
bootstrap.yml
server:
port: 8082 #程序端口号
spring:
application:
name: provider # 利用名称
cloud:
sentinel: transport: port: 8719 # 启动HTTP Server,并且该服务与Sentinel仪表进行交互,是Sentinel仪表盘能够管制利用,如被占用,则从8719顺次+1扫描 dashboard: 127.0.0.1:8080 # 指定仪表盘地址nacos: discovery: server-addr: 127.0.0.1:8848 # nacos服务注册、发现地址 config: server-addr: 127.0.0.1:8848 # nacos配置核心地址 file-extension: yml # 指定配置内容的数据格式
management:
endpoints:
web: exposure: include: '*' # 公开所有端点
写一个简略的Controller给消费者调用
@RestController
public class TestController {
@GetMapping("/test")public String test(){ return "provider test办法" + RandomUtils.nextInt(0,100);}
}