2013-07-19 160 views
5

我有一个SOAP API,我希望在“y”时间内接收到“x”多个调用之后以用户为基础节制访问权限。API节流最佳实践

经过搜索后,第一个考虑因素(显然)就是考虑您的参数,以便何时抑制用户。然而,我并没有看到太多的实施这样的解决方案的最佳实践/例子的方式。我确实看到了Leaky Bucket Method这是有道理的。但我必须相信,尽管有更多的想法。

关于如何去实施您的节流解决方案?问题包括:

  • 是否有任何框架提供用于在web apis中进行节流的功能(例如Spring等)?
  • 对我而言,您需要存储每个用户的访问信息。如何最大限度地减少执行此次每次调用的数据库开销?
  • 你甚至需要访问数据存储来实现它吗?
+0

只需注意漏桶更多地针对流量(不可数数据,流动内容),您可以使用[令牌桶算法](https://en.wikipedia.org/wiki/Token_bucket) )。只有一点点区别 - 机制是一样的,但不是倒水桶,而是添加可数令牌,这更符合要求。 – botchniaque

回答

3

对于什么它的价值,我已经回答了这个问题后工作了一些其他生产项目。

  1. 家酿:使用Spring AOP到周围的切点之前,执行API方法的代码的方法调用是,如果你有自己的算法,实现了一个家庭酿造方式。由于您可以在决定如何处理请求之前获取大量元数据,因此这种方式非常优雅灵活。
  2. API管理服务:如果您正在讨论生产系统并且您有预算,最好的方法是将其委托给API管理层,如ApigeeMashery

优势是它分离的关注,以便其更易于更改,并允许您只需专注于自己的API。如果涉及商业利益相关方,并且您需要良好的用户界面和术语词典,这一点特别有用。

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

希望这可以帮助别人!