如何限制每个客户的球衣配额

时间:2011-01-27 03:41:03

标签: java api jersey jax-rs quota

我已经通过jersey框架构建了Web服务API。 现在我想限制每个客户的配额。 例如:   - 一个客户端在一天内只能生成少于10000个请求。   - 一个客户端每秒只能发出少于10个请求。 等等。

我应该将这些信息存储在数据库表中吗? 但是,如果我这样做,处理这些请求会花费很多时间,因为我必须更新表格。

我期待着解决这些问题的其他有效方法。 因为这是我第一次做这种工作,希望有人能就这些问题给我一些建议。  感谢〜!

1 个答案:

答案 0 :(得分:2)

如果没有关于如何定义客户的信息,很难回答这个问题。但是,一种方法是使用ContainerRequestFilter

过滤所有传入的请求

然后在该级别,您可以定义客户端是什么,并记录该客户端对Jersey应用程序的所有访问。可能通过递增DataStructure中的值或数据库中的值。然后有一个cron作业每24小时刷新一次数据。

理想情况下,您希望将数据存储在内存数据结构中,因为数据是瞬态的,它不会增长到很大的尺寸,并且无论如何都会在短时间内被删除。但是,如果您在一台计算机上扩展到多台计算机或多个实例,这将成为一个问题。

如果没有您的更多信息,我无法提供更多信息