OpenFeign整合Sentinel实现熔断降级
本篇先介绍如何将Sentinel与OpenFeign整合使用,并且熔断降级策略使用动态配置。
关于Sentinel的搭建比较简单这边只做简单介绍:
1、只需要配置java环境然后 java -jar sentinel就能启动一个Sentinel服务。
2、Sentinel 默认会开启8080端口,访问地址为:IP地址:8080 账号密码为:sentinel/sentinel
1、引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
引入该依赖也会将sentinel-core以及sentinel-datasource-extension引入,实际上实现熔断降级我们只需要这两个jar包就够了,当然,前提是自己实现与OpenFeign的整合。而spring-cloud-starter-alibaba-sentinel提供了Sentinel与OpenFeign整合使用的实现。
2、配置Sentinel的服务地址配置application.yaml
spring:
cloud:
sentinel:
transport:
port: 8081 # 微服务与sentinel 交互
dashboard: localhost:8080 # 指定控制台服务的地址
3、启用OpenFeign整合Sentinel的自动配置
熔断是在consumer端实现的,所以在consumer端的application.yaml配置文件中添加如下配置。
feign:
sentinel:
enabled: true
4、假如使用Openfeign调用某一个微服务的简单的规则配置,在application.yaml文件中配置
# 配置 servuce-vod 微服务调用的规则,该规则为调用者配置的。
# 默认调用规则为 轮询规则 RoundRobinRule
# 最小并发请求:BestAvailableRule
# 过滤掉一些一直连接失败的server,或者高并发的server:AvailabilityFilteringRule
# WeightedResponseTimeRule 根据响应时间分配一个weight,响应越长,weight越小
# RetryRule:对选定的负载均衡策略机上重试机制
# RandomRule:随机选择一个server
# ZoneAvoidanceRule:综合判断server所在区域的性能和server可用性选择server
service-vod:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule
MaxAutoRetries: 0 # 同一个实例最大重试次数,不包括首次滴哦用,默认0
MaxAutoRetriesNextServer: 1 # 重试其他实例的最大重试次数,不包括首次所选的server,默认1
# 一般MaxAutoRetriesNextServer参数配置为:该服务集群数 -1
ConnectTimeout: 5000 # 连接建立超时时长,默认1秒
ReadTimeout: 5000 # 处理请求的超时时间,默认为1秒