Spring Cloud Alibaba整合Sentinel
2023-02-18 16:28:04 时间
Spring Cloud Alibaba 整合 Sentinel
一、需求
实现一个简单的 整合 sentinel
,不涉及sentinel
的用法
二、实现步骤
1、下载 sentinel dashboard
https://github.com/alibaba/Sentinel/releases
注意:
默认会启动
8080
端口,如果端口冲突,可以在启动命令上加入-Dserver.port=新端口
默认用户名和密码[sentinel/sentinel
]
启动控制台可用的配置项
2、服务提供者和消费者引入sentinel依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
注意: 在这个里面查找 sentinel-core
的版本号,可以确定我们需要下载那个版本的 sentinel dashboard
3、配置控制台信息
spring:
sentinel:
transport:
# 控制台的地址
dashboard: localhost:8080
# 与控制台通讯的端口,默认是8719,不可用会一直+1,知道找到一个可用的
port: 8719
# 和控制台保持心跳的ip地址
client-ip: 127.0.0.1
# 发送心跳的周期,默认是10s
heartbeat-interval-ms: 10000
4、一个简答的整合就整合完了,访问资源,查看控制台。
三、整合Feigen
1、配置文件中加入 feign.sentinel.enabled=true
即可。
2、加入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
3、对 Feign
接口的降级或限流等操作时,资源名称的格式为:httpmethod:protocol://requesturl
四、整合 RestTemplate
1、在RestTemplate
上加入 @SentinelRestTemplate
注解。
2、配置文件中加入 resttemplate.sentinel.enabled: true
,默认就是 true
3、降级或限流时的处理
抄sentinel的官网描述,文本给出链接
@SentinelRestTemplate 注解的属性支持限流(blockHandler, blockHandlerClass)和降级(fallback, fallbackClass)的处理。
其中 blockHandler 或 fallback 属性对应的方法必须是对应 blockHandlerClass 或 fallbackClass 属性中的静态方法。
该方法的参数跟返回值跟 org.springframework.http.client.ClientHttpRequestInterceptor#interceptor 方法一致,其中参数多出了一个 BlockException 参数用于获取 Sentinel 捕获的异常。
比如上述 @SentinelRestTemplate 注解中 ExceptionUtil 的 handleException 属性对应的方法声明如下:
public class ExceptionUtil {
public static ClientHttpResponse handleException(HttpRequest request, byte[] body, ClientHttpRequestExecution execution, BlockException exception) {
...
}
}
五、@SentinelResource的用法
1、@SentinelResource 注解用来标识资源是否被限流、降级。
2、一般推荐将 @SentinelResource 注解加到服务实现上
3、可以指定 blockHandler
或 fallback
,在发生异常时的处理。
六、代码路径
https://gitee.com/huan1993/spring-cloud-alibaba-parent/tree/master/sentinel
七、参考文档
相关文章
- [CSS] media query媒体查询中的min-width和max-width
- [日常] robots.txt允许所有搜索引擎收录
- [nginx] 开启nginx反向代理的同时try_files指令排除静态资源请求到后端服务
- 在线客服系统源码|在线客服系统源码下载
- [日常] win10系统设置电脑从不休眠睡眠
- [前端] 项目中的ICONO 纯 CSS 绘制的一套图标库
- [微信公众号开发] 创建菜单测试的时候出现错误码40016
- [nginx] nginx判断文件存在直接返回,不存在的时候才执行反向代理
- [前端] ElementUI 中table表格数据解析渲染html格式
- [Nginx] root和alias指令的区别
- [TCP] write: broken pipe 的 原因
- [微信开发] 微信公众号被关注后如何回复多条消息?
- 客服在线咨询工具|即时聊天客服系统下载安装(包含APP)
- [微信开发] 解决:该公众号提供的服务出现故障,请稍后再试
- [日常] 华为手机截屏快捷键
- [windows] win10下的SysMain服务
- [nginx] X-Cache: HIT的意思
- [MySQL] 解决ERROR 1273 (HY000) at line 199: Unknown collation: 'utf8mb4_0900_ai_ci'
- [css] 加载本地文件出现跨域Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https.
- [html] link 标签 rel=canonical 属性的用法