gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:20:55 27 4
gpt4 key购买 nike

我的服务前面有一个简单的 Spring Cloud Netflix Zuul。我想为传入此 Zuul 的所有请求设置速率限制

我看过这篇文章:https://www.baeldung.com/spring-cloud-zuul-rate-limit但是我的 Zuul 或 JPA 存储库中都没有 Controller 。 Zuul 从 Eureka 接收的所有路由。

Zuul:

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class BlitzZuulApplication {

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

}

application.properties:

spring.application.name=zuul
server.port = 7125
my.eureka.port=7126

eureka.client.service-url.defaultZone=http://localhost:${my.eureka.port}/eureka

pom.xml:

    <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>

如何配置 Zuul 进行速率限制并限制总体传入请求的数量?

最佳答案

我使用以下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依赖项应添加到项目中,并且数据源应照常配置。

如果您现在启动一个项目,您将收到此异常:

java.sql.SQLSyntaxErrorException: Table 'rate' doesn't exist

在此源代码中,您可以在 config 文件夹中找到 Rate.java 类,其结构为: https://www.programcreek.com/java-api-examples/?code=marcosbarbero/spring-cloud-zuul-ratelimit/spring-cloud-zuul-ratelimit-master/spring-cloud-zuul-ratelimit-core/src/main/java/com/marcosbarbero/cloud/autoconfigure/zuul/ratelimit/RateLimitAutoConfiguration.java#

因此Rate实体是:

@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
}

通过此配置并创建表一切正常,Zuul 将有关请求的信息保存在表中。就我而言,60 秒内允许 2 个请求。

关于java - 如何在Spring Cloud Netflix Zuul上配置简单的速率限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57706701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com