【问题标题】:rate limiting and throttling in javajava中的速率限制和节流
【发布时间】:2019-12-25 15:28:27
【问题描述】:

我需要在我的一个微服务中实现速率限制器/节流。 例如,我有一个用户微服务来处理登录并根据角色(如管理员或普通用户)获取用户数据,使用 JWT 令牌和注释@Secured,所以,我的要求是根据这些调用的 api 进行节流。而且,我也应该能够在运行时修改节流限制。 我不想重新发明轮子,所以,有什么想法吗? 技术栈:- java、spring boot

【问题讨论】:

    标签: spring-boot java-8 throttling rate-limiting


    【解决方案1】:

    这个问题的答案肯定取决于您将节流与什么联系起来。

    1. 如果您想在一段时间内根据角色限制 api 返回的数据,您可以通过使用 spring-boot 缓存来实现。您可以在 springboot-app 中控制缓存驱逐时间(即使您想外部化配置)。

    请查看https://spring.io/guides/gs/caching/。另外,如果需要,请查看https://www.youtube.com/watch?v=nfZxXGjXVfc 演示。

    我没有详细说明缓存是如何完成的,因为它在 springboot 文档中得到了很好的解释。因此,可能必须根据您的需要对其进行调整,但这是您控制节流的第一个答案。

    1. 如果您正在考虑限制 api 端点本身或限制它可以服务的数据量,即控制号。它可以在几秒钟内处理的请求等。然后你可以使用来自 Guava 的RateLimiter

    此外,如果您使用的是 springboot,我设法找到了另一个可能更相关的。我是weddini/spring-boot-throttling

    似乎第二种方法更适合您的需要。

    希望对你有帮助!

    【讨论】:

    • 是的,我想在微服务中限制 api,我有 3-4 个端点,我想为每个端点设置限制,我将探索库,看看是否可行。
    • 当然!请分享。一定有一些博客使用了 weddini
    • 你能分享一下你是否得到答案吗?
    • 我们仍在评估节流库可能是使用一些开源库,任何指针?我们的要求是为微服务中的每个 url 设置节流,也许我们可以使用 tomcat Valve 来解决这个问题.
    • Guava - 正在增加更多延迟以请求任何想法为什么?
    猜你喜欢
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    相关资源
    最近更新 更多