当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Cloud Netflix Zuul上配置简单的速率限制?

南门峰
2023-03-14

我有一个简单的Spring云Netflix Zuul在我的服务前面。我想为所有来此祖尔的请求设定速率限制。

我看到了这个帖子:https://www.baeldung.com/spring-cloud-zuul-rate-limit,但是我的Zuul或JPA存储库中都没有控制器。Zuul从尤里卡接收的所有路线。

祖尔:

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class BlitzZuulApplication {

    public static void main(String[] args) {
        SpringApplication.run(BlitzZuulApplication.class, args);
    }

}
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
    </dependency>
    <dependency>
        <groupId>com.marcosbarbero.cloud</groupId>
        <artifactId>spring-cloud-zuul-ratelimit-core</artifactId>
        <version>2.2.4.RELEASE</version>
    </dependency>

共有1个答案

滑畅
2023-03-14

我使用以下application.yaml文件:

zuul:
  routes:
    my-service:
      path: /
  ratelimit:
    enabled: true
    repository: JPA
    policy-list:
      my-service:
        - limit: 2
          refresh-interval: 60
          type:
            - origin
  strip-prefix: true

此时,属性zuul.ratelimit.repository不应为空。有一些选项列出,如果你错过了。

我开始使用JPA存储库。为此,应该在项目中添加spring-boot-starter-data-jpa依赖项,并且应该像往常一样配置datasource。

@Entity
public class Rate {

    @Id
    private String key;
    private Long remaining;
    private Long remainingQuota;
    private Long reset;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy HH:mm:ss")
    private Date expiration;

    // constructor, getters and setters 
}
 类似资料:
  • 全局速率限制架构概述。 { "stage": "...", "disable_key": "...", "actions": [] } stage (optional, integer) 指在过滤器中设置的阶段。速率限制配置仅适用于具有相同阶段编号的过滤器。默认的阶段编号是0。 注意:对于阶段编号,过滤器支持0-10的范围。 disable_key (optional, string

  • API1.7和SLF4J-实现简单。我只是找不到如何用这种组合配置日志级别。 有人能帮忙吗?

  • 速率限制配置参考 filter.http.RateLimit filter.http.RateLimit proto { "domain": "...", "stage": "...", "request_type": "...", "timeout": "{...}" } domain (string, REQUIRED) 需要调用速率限制服务时的域。 stage (uint3

  • 速率限制配置参考。 filter.network.RateLimit filter.network.RateLimit proto { "stat_prefix": "...", "domain": "...", "descriptors": [], "timeout": "{...}" } stat_prefix (string, REQUIRED) 发布统计信息时使用的前缀。

  • 速率限制配置概述。 { "name": "rate_limit", "config": { "domain": "...", "stage": "...", "request_type": "...", "timeout_ms": "..." } } domain (required, string) 调用速率限制服务时使用的域。 stage (opt

  • 速率限制配置参考。 { "name": "ratelimit", "config": { "stat_prefix": "...", "domain": "...", "descriptors": [], "timeout_ms": "..." } } stat_prefix (required, string) 发布统计信息时使用的前缀。 domai