我已经通过 jersey 框架构建了 Web 服务 API。现在我想限制每个客户的配额。例如: - 一个客户一天只能发出少于 10000 个请求。- 一个客户端每秒只能发出少于 10 个请求。等等等等。
我应该将这些信息存储在数据库的表中吗?但是如果我这样做,处理这些请求是否会花费很多时间,因为我必须更新表。
我期待其他有效的方法来解决这些问题。因为这是我第一次做这样的工作,希望有人能在这些问题上给我一些建议。谢谢~!
如果没有关于如何定义客户的信息,很难回答这个问题。然而,一种方法是使用ContainerRequestFilter过滤所有传入的请求
然后在该级别,您可以定义什么是客户端,并记录该客户端对您的 Jersey 应用程序的所有访问。也许通过增加 DataStructure 中的值或数据库中的值。然后有一个 cron 作业每 24 小时刷新一次该数据。
理想情况下,您希望将数据存储在内存数据结构中,因为数据是瞬态的,它不会增长到很大,并且无论如何都会在短时间内被删除。但是,如果您扩展到多台机器或单台机器上的多个实例,这将成为一个问题。
如果没有您提供的更多信息,我真的无法提供更多信息