OpenFeign-And-Sentinel

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秒

5、SpringBoot启动类中添加@EnableFeignClients OpenFeignClients的客户端注解

6、假设我这边需要调用一个远程的微服务,需要在本地创建一个远程服务的接口

7、需要在本地创建一个对应接口的实现类,当调用该服务失败后会调用该实现类的方法使服务熔断

8、本地调用该微服务的话,只需要注入该feign定义的接口执行接口中的方法即可

Contents
  1. 1. OpenFeign整合Sentinel实现熔断降级
    1. 1.1. 1、引入依赖
    2. 1.2. 2、配置Sentinel的服务地址配置application.yaml
    3. 1.3. 3、启用OpenFeign整合Sentinel的自动配置
    4. 1.4. 4、假如使用Openfeign调用某一个微服务的简单的规则配置,在application.yaml文件中配置
    5. 1.5. 5、SpringBoot启动类中添加@EnableFeignClients OpenFeignClients的客户端注解
    6. 1.6. 6、假设我这边需要调用一个远程的微服务,需要在本地创建一个远程服务的接口
    7. 1.7. 7、需要在本地创建一个对应接口的实现类,当调用该服务失败后会调用该实现类的方法使服务熔断
    8. 1.8. 8、本地调用该微服务的话,只需要注入该feign定义的接口执行接口中的方法即可
|