sentienl
整合springboot
Spring Cloud Alibaba Sentinel
导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
配置受保护资源(自动)
下载jar包并且运行(指定端口号)
java -jar sentinel-xxxx --server.port=8333
每个用到sentinel 的微服务配置通信端口
spring: cloud: sentinel: transport: port: 8719 dashboard: localhost:8333
启动项目测试一下
默认账号密码:sentinel
懒加载,经过请求后就可以添加流控信息

QPS 每秒访问量, 控制后方法都不会被调用
实时监控
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
配置:
management.endpoints.web.exposure.exclude=*
测试: 访问后等待几秒会刷新界面

流控
自定义流控响应
自定义类R返回 R.异常信息和R.异常码
链路和关联
链路: 指定入口到这个资源的才会限流, 其他的情况下不限流
关联: B流量大就限制A (读写)
预热时长 : 几秒内慢慢达到峰值
排队等待: 限流外的排队慢慢处理
远程服务崩溃就降级
引入openfeign依赖 然后添加配置
-
feign.sentinel.enabled=true
编写代码 测试
配置降级策略
平均响应时间(ms), 异常比例, 异常数 ,窗口时间(在多少秒内不会再调用)
调用方不去调用资源[熔断]
被调用方去服务开启但是不服务,返回的是[]降级]数据
意思是调用方和被调用方都可以做降级,被调用方做降级就相当于是全局性的(虽然在运行,但返回的是降级数据[无效的])
1.通过try -catch
2.支持通过 @SentinelResource 注解定义资源并配置 blockHandler 和 fallback 函数来进行限流之后的处理
网关流控
导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
添加配置
启动测试

网关限流, 可以通过细化,限制固定请求头的 或者IP的等等

sleuth+zipkin服务链路追踪

浙公网安备 33010602011771号