每日笔记10.8

openFeign+sentinel

对远程调用熔断降级,启动 Sentinel的熔断降级机制 , 能够快速返回响应,而不是使用默认的超时机制(因为超时机制容易线程堆积, 从而导致雪崩)

pom.xml

对应子服务模块加入整合依赖

<!-- 加入 sentinel 和 nacos 持久化整合依赖 -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

openfeign的service层

@Service
@FeignClient(value = "member-service-nacos-provider",fallback = MemberFeignFallbackService.class)
public interface MemberOpenFeignService {

    /**
     * get方法
     * 远程调用 http://member-service-nacos-provider/member/get/{id}
     * @param id

     * @return
     */
    @GetMapping(value = "/member/get/{id}")
    public Result getMemberById(@PathVariable("id") Long id);
}

fallback异常处理

@Component
public class MemberFeignFallbackService  implements MemberOpenFeignService {
        @Override
        public Result<Member> getMembertById(Long id) {
                return Result.error("500", "被调用服务异常, 熔断降级,快速返回结果, 防止线程堆
                积");
         }
}

application.yml

server:
  port: 10006

spring:
  application:
    name: member-service-nacos-provider
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url : jdbc:mysql://localhost:3306/ZyzSpringCould_db?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root
  #配置nacos
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置nacos-server的地址
    sentinel:
      transport:
        dashboard: localhost:9999 #指定sentinel控制台地址
        #4. 简单的说明: spring.cloud.sentinel.transport.port:指定被监控的微服务应用与
        # Sentinel 控制台交互的端口,微服务应用本地会起一个该端口占用的 Http Server
        port: 8719 #默认 8719,假如被占用了, 会自动从 8719 开始依次+1 扫描
        #直至找到未被占用的端口
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.zyz.springcloud.entity
#  配置暴露所有的监控点,给sentinel用
management:
  endpoints:
    web:
      exposure:
        include: '*'

#openfeign 和 sentinel 整合,必须配
feign:
  sentinel:
    enabled: true

规则持久化

配置内容流控规则参数说明

  1. resource∶资源名称;
  2.  limlitApp∶ 来源应用;
  3.  grade∶阈值类型,0表示线程数,1表示QPS;
  4.  count∶单机阈值;
  5.  strategy∶流控模式,0表示直接,1表示关联,2表示链路;
  6.  controlBehavior∶流控效果,0表示快速失败,1表示Warm Up,2表示排队等待;
  7.  clusterMode∶是否集群

[

        {

                "resource":"/member/openfeign/consumer/get/1",

                "limitApp": "default",

                "grade": 1,

                "count": 1,

                "strategy": 0,

                "controlBehavior": 0,

                "clusterMode": false

        }

]

pom.xml

<!-- 加入 sentinel 和 nacos 持久化整合依赖 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

application.yml

server:
  port: 80

spring:
  application:
    name: member-service-nacos-consumer-80
#    配置nacos
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    sentinel:
      transport:
        dashboard: localhost:9999 #指定sentinel控制台地址
        port: 8719 #默认 8719,假如被占用了, 会自动从 8719 开始依次+1 扫描
        #直至找到未被占用的端口
  #配置该微服务从 Nacos Server 获取流控规则
      datasource:
        ds1:
          nacos:
            server-addr: localhost:8848
            dataId: member-service-nacos-consumer
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: flow
#openfeign 和 sentinel 整合,必须配
feign:
  sentinel:
    enabled: true

rule-type: flow  是令牌桶算法

Sentinel 利用 LRU 策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控 https://blog.csdn.net/qq_34416331/article/details/106668747

测试

对应sentinel中流控会自动设置QPS =1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值