首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Springboot:实现节流

Springboot:实现节流
EN

Stack Overflow用户
提问于 2020-07-10 00:18:38
回答 3查看 3.7K关注 0票数 2

我们正在我们的organization.We中编写一个全新的spring-boot-2应用程序,正在探索如何在api之上实现节流?有哪些框架可以用spring引导实现节流?我们可以使用resilence4j或Netflix Zuul RateLimiter来实现这一点吗?

EN

回答 3

Stack Overflow用户

发布于 2020-07-10 02:34:26

在不使用外部依赖项的情况下,可以将其实现为筛选器:

代码语言:javascript
复制
public class RpsFilter extends GenericFilterBean {
//...
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        if (rpsGreaterThanMax()) {
            responseSystemBusy((HttpServletResponse) response);
        }
        else {
            chain.doFilter(request, response);
        }
    }
//...
}

然后将其添加到过滤器链中:

代码语言:javascript
复制
@Bean
public FilterRegistrationBean<RpsFilter> rpsFilter(){
    FilterRegistrationBean<RpsFilter> registrationBean = new FilterRegistrationBean<>();
    int maxRps = getMaxRequestsPerSecond(); // from properties file
    registrationBean.setFilter(new RpsFilter(maxRps));
    registrationBean.addUrlPatterns("/api/v1/*"); // url to apply the throttling
    return registrationBean;    
}
票数 3
EN

Stack Overflow用户

发布于 2020-07-10 04:49:10

resilience4j RateLimiter是一个不错的选择,因为resilience4j是一个轻量级和模块化的库。只有极小的配置。此外,它还将向计量器注册表发布这些指标。

resilience4j也很容易与Spring集成。它为它提供反应堆操作人员。

文档:resilience4j RateLimiter

票数 2
EN

Stack Overflow用户

发布于 2022-10-06 08:24:00

使用weddini依赖项

代码语言:javascript
复制
  <dependency>
    <groupId>com.weddini.throttling</groupId>
    <artifactId>spring-boot-throttling-starter</artifactId>
    <version>0.0.9</version>
  </dependency>

您只需在服务方法上使用@Throttling注释来启用默认或自定义实现的节流。例如,

代码语言:javascript
复制
//this is the default implementation
@Throttling
public void serviceMethod() {}

//annotation above is equivalent to this
@Throttling(type = ThrottlingType.RemoteAddr, limit = 1, timeUnit = TimeUnit.SECONDS)
public void serviceMethod() {}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62825536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档