六. SpringCloud Alibaba Sentinel 持久化数据到Nacos与支持Feign

一. 持久化 Sentinel 对接口的配置到 Nacos

  1. 简单解释: 假设有服务接口需要通过 Sentinel 设置流量控制,熔断降级等,将该服务注入到 Sentinel, 然后在 Sentinel 中对该服务的接口进行流控,熔断降级设置,但是会发现一个问题,当该服务宕机重启后, Sentinel 中对该服务设置的流控,熔断降级等相关设置都会丢失,假设多个服务发布重启,需要重新设置解决这个问题,可以将 Sentinel 数据进行持久化,此处以持久化到 Nacos 为例
  2. 步骤
  • 创建服务,由于用到了 Nacos 作为注册中心,作为配合中心,用到了 Sentinel 配置管理当前服务,并需要进行持久化设置,需要引入 Nacos 注册中心依赖,Nacos 配置中心依赖,Sentinel 依赖与Sentinel持久化需要的依赖
  • 通过yml配置文件配置
  • 配置当前服务注册到 Nacos 注册中心
  • 当前服务使用 Sentinel 进行流控,熔断降级设置,配置当前服务注入到哪个 Sentinel
  • Nacos 配置中心中创建保存当前服务需要用到的配置文件配置变量
  • Nacos 作为配置中心,配置当前服务通过哪个 Nacos 获取配置文件
  • Nacos 配置中心中同时保存 Sentinel 用到的对当前服务接口设置的流控,熔断降级设置文件
  • 配置当前服务 Sentinel 读取保存在 Nacos 配置中心上的流控,熔断降级等相关文件

配置持久化简单案例

  1. pom 文件中添加依赖
 		<!--nacos discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--nacos config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--sentinel-datasource-nacos 持久化需要用到-->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>
        <!--sentinel-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
  1. yml 文件中 Sentinel 配置中增加通过数据源读取数据的配置
server:
  port: 8401 #当前服务端口号

spring:
  application:
    name: cloudalibaba-sentinel-service #当前服务名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848  #Nacos服务注册中心地址,将当前服务注册到Nacos

    #=================sentinel 配置==========================================
    sentinel:
      transport:
        dashboard: localhost:8080 #配置Sentinel dashboard地址,当前服务被指定的 Sentinel 监管
        # 默认8719端口,假如被占用了会自动从8719端口+1进行扫描,直到找到未被占用的 端口
        port: 8719
      #配置 sentinel 读取数据的数据源
      datasource:
        #自定义的数据源名称,可以多个,必须唯一,可以理解为通过该数据源指定
        #读取哪个位置的哪个文件中的数据,此处表示读取 Nacos 配置中心上的
        #名为 cloudalibaba-sentinel-service 类型为 json 文件中的数据
        #前提是指定的 Nacos 配置中心中要有该文件,该文件中保存的是,Sentinel
        #对当前服务或服务中的接口设置的流控,熔断降级等相关的数据
        ds1:
          nacos:
            server-addr: localhost:8848 #存放数据的数据源地址,通过 Nacos 保存相关数据
            dataId: cloudalibaba-sentinel-service #读取 Ncaos 配置中心上文件的名称
            groupId: DEFAULT_GROUP #读取 Nacos 配置中心哪个分组id
            data-type: json #读取 Nacos 配置中心上的什么类型的文件
            rule-type: flow #读取的规则类型
    #=================sentinel 配置 end==========================================

#配置暴露当前服务端点
management:
  endpoints:
    web:
      exposure:
        include: '*'

feign:
  sentinel:
    enabled: true #激活Sentinel 对Feign的支持
  1. 登入 yml 中配置的 Sentinel 连接的 Nacos 配置中心,在配置中心中创建 Sentinel 读取的配置文件,添加针对当前服务的设置的流控,熔断降级相关数据
    在这里插入图片描述
  2. 配置内容解释:
  • “resource”: “/test1”,//对应 Sentinel 中的资源名称(接口请求路径,或指定的资源名称)
  • “limitApp”: “default”,//对应 Sentinel 中的来源应用(在Stinel中一般使用默认的)
  • “grade”: 1, //对应 Sentinel 设置的阈值类型,0 表示线程数,1 表示QPS
  • “count”: 1,//对应 Sentinel 设置的单机阈值
  • “strategy”: 0,//对应 Sentinel 设置的流程模式,0直接,1关联,2链路
  • “controlBehavior”: 0,//对应 Sentinel 流程效果,0快速失败,1WarmUp,2排队等待
  • “clusterMode”: false //对应 Sentinel 设置的是否集群
  1. 在项目启动后访问该服务中的任意一个接口时,会自动通过配置的 Sentinel 数据源读取 Nacos 上的指定的文件,加载配置内容,获取到针对该服务的流控,熔断,降级等相关数据(如果启动服务不妨问服务中的任何借口,默认是不会主动去读取数据的,Sentinel 流控页显示为空)

二. Sentinel 与 Feign 客户端

在通过 Sentinel 监管的服务中使用 Feing 客户端调用微服务接口,需要在 yml 配置文件中配置 Sentinel 对 Feign 的支持(上面的yml 中有),其它的使用还是按照以前的引入 Feign 依赖,启动类添加注解,创建 Feign 调用接口,使用@FeignClient修饰,通过注解的 value 值设置为需要调用的服务名称,fallback 属性值设置针对服务调用异常降级方法所在类,启动类添加 @EnableFeignClients 等等

feign:
  sentinel:
    enabled: true #激活Sentinel 对Feign的支持

依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值