更新时间:2025-01-09 GMT+08:00
分享

接入指南

  1. pom文件添加依赖。
    <dependency>
        <groupId>com.huaweicloud.devspore</groupId>
        <artifactId>devspore-clientcontrol</artifactId>
        <version>${devspore-clientcontrol.version}</version> #版本号,版本号可参考AstroPro-SDK版本变更与下载。
    </dependency>
  2. 配置文件示例。
    devspore:
      client-control:
        biz-pool: #(线程池配置,当使用超时功能时需要配置此参数,多个超时规则共用一个线程池)
          prioritized: false # 线程池队列是否采用优先队列,当消息有优先级时需要设置: true: 优先队列 false:非优先队列
          core-pool-size: 20 # 线程池核心线程数
          maximum-pool-size: 32 # 线程池所能容纳的最大线程数
          keep-alive-time-ms: 60000 # 线程池任务队列大小
          work-queue-size: 5000 # 非核心线程闲置时的超时时长
          rejectedExecutionHandlerClassName: java.util.concurrent.ThreadPoolExecutor$AbortPolicy # 线程池的拒绝策略(类的全路径限定名)
        caches:
          demo-caches: # 自定义的缓存策略,可定义多个
          ttl: 60000 # 缓存时长,默认6小时
          performance-ttl: 30000 # 性能缓存时长,默认10分钟
          type: caffeine # 缓存类型,可选值:redis/caffeine
          redis-connection-factory-bean-name: redisConnectionFactory # 缓存类型为redis时可通过配置该选项指定RedisConnectionFactory的bean名称来选择所用数据源 (type为redis时使用)
          maximum-size: 60000 # caffeine缓存最大数量,默认60000 (type为caffeine时使用)
          cache-consecutive-exception-times: 3 # 缓存连续异常次数,默认3次 (达到指定次数后关闭缓存的功能)
          cache-interruption-duration: 60 # 缓存功能关闭时长,单位s,默认60 (达到指定时间后恢复缓存的功能)
        rules:
          demo-rules: # 自定义的流控规则,可定义多个
            time-limit:
              enable: false # 超时功能开关, 默认开启
              timeout-duration: 1000 # 限时时长 默认1000ms
    	  cancel-running-future: true # 超时是否结束当前任务 默认true
            retry:
              enable: false # 重试开关,默认开启
    	  enable-log: true  # 重试日志开关,默认开启
    	  log-correlation-property: demo # 可取出header或attributes中相应字段值打印到重试日志中(无需要可配置为空字符串 "")
    	  max-attempts: 3 # 最大重试次数,默认3
    	  wait-duration-ms: 500 # 重试间隔,默认500(ms)
    	  policy: Randomized # 可选值Exponential/Randomized(重试策略,Exponential指数级/Randomized固定间隔(默认Randomized))
    	  randomized-wait-factor: 0.5 # 随机策略随机因子,默认0.5
    	  exponential-backoff-multiplier: 2 # 指数退避算法的乘数,默认2.0
    	  ignore-exceptions: # 不触发重试的异常,此项配置在超时启用时失效
    	    - java.awt.AWTException
    	    - javax.security.auth.login.AccountExpiredException
    	  retry-exceptions: # 不触发重试的异常,此项配置在超时启用时失效
    	    - java.awt.AWTException
    	    - javax.security.auth.login.AccountExpiredException		  
            fallback:
              enable: true # 熔断开关, 默认开启
    	  enable-log:true # 熔断状态切换日志开关
              slow-call-duration-threshold: 1 # 计入慢调用的时间,单位 s
              slow-call-rate-threshold: 20 # 慢调用百分比(100为关闭慢调用熔断功能)(慢调用计算窗口和失败的窗口是独立计算的两个窗口)
              failure-rate-threshold: 50 # 滑动窗口内失败百分比,默认50
              sliding-window-type: COUNT_BASED # 	滑动窗口类型(COUNT_BASED次数/TIME_BASED时间)
              sliding-window-size: 5 # 滑动窗口大小(次/秒)
              minimum-number-of-calls: 5 # 滑动窗口内最小请求数(滑动窗口内满足最小请求数才会触发熔断)
              wait-duration-in-open-state: 10000 # 进入半开所需时间(断路器打开以后进入半开状态等待时间)
              permitted-number-of-calls-in-half-open-state: 5 #半开状态允许通过的请求数量,默认10个请求(失败比例达到设置的百分比,断路器继续打开,再次等待进入半开)注:不大于滑动窗口内最小请求数,相对较小的配置优先起作用,所以如果大于滑动窗口最小请求,起作用的就是滑动窗口最小请求数了
    	  ignore-exceptions: # 不触发熔断的异常,此项配置在超时启用时失效
    	    - java.awt.AWTException
    	    - javax.security.auth.login.AccountExpiredException
    	  retry-exceptions: # 指定触发熔断的异常,此项配置在超时启用时失效
    	    - java.awt.AWTException
    	    - javax.security.auth.login.AccountExpiredException
  3. 代码中添加@Clientcontrol注解。
    @ClientControl(rule = "demo-rules")
    public String testTimelimit(long sleepTime) {
      return "test";
    }

相关文档