接口限流处理

  • Post author:
  • Post category:其他


每个API接口都有自己的访问极限,实现接口限流,保护应用以及服务器的正常运行。

方式一: Java处理


令牌桶处理:(使用RateLimiter工具)

①引入jar包

<dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>27.0.1-jre</version>
     </dependency>

② 编写接口

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Ide {
}

③ aop处理

@Aspect
@Component
public class LeLogAspect {

    @Autowired
    private SyslogOperationService syslogOperationService;

    // 并发数为10
    private RateLimiter rateLimiter = RateLimiter.create(10);


    @Pointcut("@annotation(com.laiease.common.annotation.Lelog)")
    public void logPointCut() {
    }
 
    /**
     * 使用 RateLimiter 限制流量
     * @param joinPoint
     * @version 2.0
     */
    @Before("logPointCut()")
    public void beforeMethod(JoinPoint joinPoint) {
        boolean b = rateLimiter.tryAcquire();
        if (!b) {
            throw new RuntimeException("网络繁忙,请稍候再试!");
        }
    }
}


方式一: tomcat处理


暂未尝试



版权声明:本文为qq_20314665原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。