我们有一个部署在多个节点上的RESTful服务,我们希望限制从每个客户端进入我们服务的调用数量,每个客户端每分钟的配额不同。我们的栈: Jboss应用服务器,Java/Spring RESTful服务。
什么云是实现这一点的可能技术?
发布于 2016-08-17 19:54:18
有时,我读了a good article where the same theme was highlighted。我们的想法是将这个逻辑转移到负载平衡代理中,这里有一些很好的理由这样做:
发布于 2016-08-17 19:48:34
如果访问API的唯一方法是通过您管理的UI客户端,那么您可以在客户端代码( web应用程序中为javascript)上添加检查,以便仅在该用户未超过限制时进行调用。否则就没有办法了,因为用户总是可以访问您的API,而您在服务器级别所能做的唯一事情就是检查是否将错误或有效结果作为API响应的一部分发送。
发布于 2016-08-17 19:50:00
为了限制堆栈,这意味着您需要保持状态,至少基于某些特定的客户端标识。这可能需要您维护一个中央计数器,例如db (cassandra),它可以让您查看每分钟的当前请求计数,然后在java过滤器中,您可以根据需要限制请求计数。
或者,如果您可以跟踪客户端的会话,那么您可以跟踪并使用粘性会话,强制客户端在客户端会话期间使用特定节点,因此您可以简单地在java过滤器中跟踪每个客户端的请求数量,并发送503代码或更相关的内容。
https://stackoverflow.com/questions/38995643
复制相似问题