对 API 进行速率限制 (spring MVC)

2023-12-19

我正在寻找最有效的方法来实现(或使用已经设置的)速率限制器,以保护我所有的其余 api url。我正在寻找的保护是“每用户每秒调用限制器”

我上网查了一下,结果是使用“Redis”或 Guava RateLimiter。

说实话我没用过Redis,对它也很不熟悉。但通过查看它的文档,它似乎有一个相当强大的速率限制器系统。

我还查看了 Guava 的 RateLimiter。而且它看起来更容易使用(不需要安装 redis 等......)

所以我想知道“就我而言”最好的解决方案是什么?使用Redis“太多”了吗?

你们中有人已经尝试过 RateLimter 了吗?这是一个好的解决方案吗?它可扩展吗?

PS:如果您认为有更好的选择,我也愿意接受除我前面提到的两个之外的其他解决方案。

谢谢你!


如果您尝试限制对基于 Spring 的 REST api 的访问,您应该使用令牌桶算法 https://github.com/vladimir-bukhtoyarov/bucket4j/blob/master/doc-pages/token-bucket-brief-overview.md.

Bucket4j-spring-boot-启动器 https://github.com/MarcGiffing/bucket4j-spring-boot-starter项目使用bucket4j https://github.com/vladimir-bukhtoyarov/bucket4j库来限制对 REST api 的访问速率。您可以通过应用程序属性文件对其进行配置。有一个选项可以基于IP地址或用户名限制访问 https://github.com/MarcGiffing/bucket4j-spring-boot-starter#expression.

如果您正在使用Netflix 祖尔 https://github.com/Netflix/zuul你可以用Spring Cloud Zuul 速率限制 https://github.com/marcosbarbero/spring-cloud-zuul-ratelimit它使用不同的存储选项:Consul、Redis、Spring Data 和 Bucket4j。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 API 进行速率限制 (spring MVC) 的相关文章

随机推荐