服务器架构|SpringCloud 整合 Sentinel
Sentinel 是阿里开源的分布式流量哨兵,具有限流、熔断降级、服务监控等功能。
下面介绍在 SpringCloud中的具体使用方式。
目录
1. 下载并启动 Sentinel 控制台服务
2. 引入起步依赖
3. 配置
4. 代码
5. 使用
6. 验证结果
1. 下载并启动 Sentinel 控制台服务
java -Dserver.port=8070 -Dcsp.sentinel.dashboard.server=localhost:8070 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.2.jar
2. 引入起步依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-sentinel
2.1.4.RELEASE
3. 配置
spring:
profiles:
active: dev
application:
name: springboot-hello
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8849
config:
server-addr: 127.0.0.1:8849
# 扩展名必须要严格一致:springboot-hello-dev.yml,
# 如果配置成 .yaml, 则 springboot-hello-dev.yaml
file-extension: yml
sentinel:
transport:
dashboard: localhost:8070server:
port: 9000
4. 代码
/**
* 被调用方的 sentinel fallback 优先调用方的 feignClient 的 fallback
*
* 1. fallback 是异常降级,只要出现业务异常后,会走 fallback 指定的方法;
* 2. 达到相应的阈值时,才会触发熔断和限流,都会抛出 BlockException 由 blockHandler 方法处理;
*
*/
@SentinelResource(value = "https://www.it610.com/article/sayHello", fallback = "sayDefaultHello",blockHandler = "blockWarn")
@RequestMapping("/hello")
@RequestMapping("/hello")
public String hello(){
int b = 1/0;
return String.format("Hello 【%s】", username);
}// 异常降级,只针对业务异常!
public String sayDefaultHello(){
return String.format("Hello World!");
}// 熔断降级、流控 都会触发 BlockException
publicString blockWarn(BlockException e) {
if (e instanceof FlowException) {
return "访问太频繁,稍后重试!";
}if (e instanceof DegradeException) {
return "服务已自动断开,稍后重试!";
}return "稍后重试";
}
5. 使用 在 dashboard 配置流控规则和熔断规则:
文章图片
6. 验证结果 1. 首次访问,触发 fallback
文章图片
2. 连续频繁刷新,触发限流
文章图片
3. 访问多次,达到熔断策略,触发熔断
文章图片
如果觉得还不错的话,关注、分享、在看(关注不失联~), 原创不易,且看且珍惜~
文章图片
【服务器架构|SpringCloud 整合 Sentinel】
推荐阅读
- 探索免费开源服务器tomcat的魅力
- [源码解析]|[源码解析] NVIDIA HugeCTR,GPU版本参数服务器---(3)
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- mac|mac 链接linux服务器 如何在Mac上连接服务器
- 年薪30万的Java架构师必会的springboot面试题
- Linux|Linux 服务器nginx相关命令
- EdgeDB 架构简析
- 运维|如何限制IP 通过 SSH连接服务器
- 【SpringCloud-Alibaba系列教程】8.一文学会使用sentinel
- 服务器未能释放tcp连接,TCP连接的建立和释放