API限流最佳实践

7
我有一个SOAP api,希望在“y”时间内收到“x”个调用后,基于用户进行访问限制。
经过搜索,首要考虑的是考虑限制用户的参数。然而,我没有看到很多关于实现这种解决方案的最佳实践/示例。我看到了Leaky Bucket Method,这很有道理。但我相信还有更多的想法。
其他人如何实现限流?问题包括:
  • 是否有任何框架(例如Spring等)提供Web API的限流功能?
  • 似乎您需要为每个用户存储访问信息。如何减少执行此操作时的数据库开销?
  • 您甚至需要访问数据存储库来实现此操作吗?

  • 请注意,Leaky Bucket 算法更适用于流量(不可数的连续内容),而对于请求 / 调用速率整形,您需要使用令牌桶算法。两者之间只有微小的差别 - 机制相同,但是您需要将可计数的令牌添加到桶中,以更好地适应请求。 - botchniaque
    1个回答

    4
    就我所知,我在处理其他生产项目后已经回答了这个问题。
    1. 自制方法: 如果你有自己的算法实现,使用Spring AOP在执行API方法代码之前切入方法调用是一种自制方法。这样做非常优雅和灵活,因为您可以在决定如何处理请求之前捕获大量元数据。
    2. API管理服务: 如果您正在谈论一个生产系统并且您有预算,可能最好的方法是将其委托给像ApigeeMashery这样的API管理层。

    优点是它分离关注点,使更改更容易,并允许您专注于API。如果业务利益相关者参与其中并且您需要良好的UI和术语词典,则特别有帮助。

    缺点当然是成本和供应商锁定。

    希望这能帮到某人!

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接