Resilience4j教学巨细

本文详细介绍了如何在SpringBoot项目中集成Resilience4j进行限流操作,包括添加必要的依赖、配置yaml文件以及使用AOP注解。重点强调了spring-boot-starter-actuator和spring-boot-starter-aop的作用,以及如何灵活配置限流策略以适应不同场景。
摘要由CSDN通过智能技术生成
第一步、加依赖下面的必须每个都加上
注意(重点):

该模块期望 org.springframework.boot:spring-boot-starter-actuatororg.springframework.boot:spring-boot-starter-aop 已经在运行时提供。 如果你在 spring boot2 中使用 webflux,你还需要 io.github.resilience4j:resilience4j-reactor

<!--        actuator依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
<!--        aop依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
<!--        resilience4j整合springboot2依赖-->
        <dependency>
            <groupId>io.github.resilience4j</groupId>
            <artifactId>resilience4j-spring-boot2</artifactId>
            <version>1.7.1</version>
        </dependency>

解释依赖:

在Spring Boot中整合Resilience4j时,需要引入以下几个依赖,并逐个解释它们的作用:

  1. spring-boot-starter-actuator:该依赖提供了一组用于监控和管理应用程序的端点(endpoints),例如/health、/info等。在Resilience4j中,通过这些端点可以获取限流器的状态信息、指标数据等。

    springboot整合resilience4j的限流操作一定要有actuator吗?

    不,Spring Boot整合Resilience4j的限流操作并不一定需要使用Actuator。Actuator是Spring Boot提供的监控和管理功能的扩展库,通过暴露一组端点(endpoints)可以获取应用程序的健康状态、运行指标等信息。当使用Resilience4j进行限流时,Actuator可以用于查看限流器的状态信息、触发重置操作等。但如果您不需要使用Actuator提供的监控功能,也可以不引入spring-boot-starter-actuator依赖,仅使用spring-boot-starter-aopresilience4j-spring-boot2依赖即可配置和使用Resilience4j的限流功能。

  2. spring-boot-starter-aop:AOP(面向切面编程)是一种编程思想,可以在应用程序运行期间将通用的横切逻辑与业务逻辑分离开来。在Resilience4j中,使用AOP可以方便地将限流、重试等功能织入到应用程序的方法调用中。

    springboot整合resilience4j的限流操作一定要有aop吗?

    Resilience4j通过AOP将限流逻辑织入到应用程序的方法调用中,以实现限流功能。通过配置方法级别的注解或者在代码中手动创建限流器,Resilience4j可以对指定的方法进行限流控制。而AOP则可以将这些限流逻辑与业务逻辑分离开来,使得限流的处理变得简洁和高效。

    因此,为了在Spring Boot项目中使用Resilience4j的限流功能,一般会引入spring-boot-starter-aop依赖,以支持AOP的使用。通过AOP的方式,可以在方法调用之前对其应用限流策略,确保系统在高负载情况下能够有效地进行限流保护。

  3. resilience4j-spring-boot2:这是Resilience4j与Spring Boot 2.x版本集成的库。它提供了自动配置、指标收集、事件监听等功能,简化了Resilience4j的使用。通过该依赖,您可以在Spring Boot应用程序中轻松地配置和管理Resilience4j的组件,如限流器、重试器、熔断器等。

这些依赖的引入使得在Spring Boot项目中使用Resilience4j变得更加便捷和高效,同时可以借助Spring Boot的其他特性来优化和管理应用程序的运行。

反正全加了肯定对

第二步、编写yaml文件
1、限流
resilience4j.ratelimiter:
    instances:
      backendA:
        limitForPeriod: 10
        limitRefreshPeriod: 1s
        timeoutDuration: 0
        registerHealthIndicator: true
        eventConsumerBufferSize: 100
     backendB:
        limitForPeriod: 6
        limitRefreshPeriod: 500ms
        timeoutDuration: 3s

解释限流pom配置:您可以配置以下属性:

  • limitForPeriod:在限定时间周期内允许的最大请求量。

  • limitRefreshPeriod:重新填充令牌桶的时间周期。也就是说,在这个时间间隔内,令牌桶会被重新填充到limitForPeriod的大小。

  • timeoutDuration:请求等待限流器可用令牌的超时时间。如果在超时时间内无法获取到令牌,则请求可能会被拒绝。

  • registerHealthIndicator:是否注册健康指示器,用于监控限流器的状态。

  • eventConsumerBufferSize:事件消费者缓冲区的大小。用于存储触发的限流事件,如果缓冲区已满,新的事件可能会被丢弃。

上述配置示例中,backendA的限流器配置如下:

  • limitForPeriod为10,表示在1秒内最多允许10个请求通过。

  • limitRefreshPeriod为1秒,每隔1秒重新填充令牌桶。

  • timeoutDuration为0,表示请求将立即失败而不会等待可用令牌。

backendB的限流器配置如下:

  • limitForPeriod为6,表示在500毫秒内最多允许6个请求通过。

  • limitRefreshPeriod为500毫秒,每隔500毫秒重新填充令牌桶。

  • timeoutDuration为3秒,如果在3秒内无法获取到令牌,则请求会超时。

这些配置可以根据您的具体需求进行调整。限流器配置的目的是限制应用程序对某个资源的并发访问量,以保护该资源免受过载和崩溃的风险。

第三步、加注解
1、限流
    @RateLimiter(name = "backendA")
    @RequestMapping("/doSeckill")
    public String doSeckill(Model model, HttpServletRequest request, long goodsId){
     ......
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值