首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制对RESTful服务的调用次数

限制对RESTful服务的调用次数
EN

Stack Overflow用户
提问于 2016-08-17 19:40:32
回答 3查看 3.7K关注 0票数 1

我们有一个部署在多个节点上的RESTful服务,我们希望限制从每个客户端进入我们服务的调用数量,每个客户端每分钟的配额不同。我们的栈: Jboss应用服务器,Java/Spring RESTful服务。

什么云是实现这一点的可能技术?

EN

回答 3

Stack Overflow用户

发布于 2016-08-17 19:54:18

有时,我读了a good article where the same theme was highlighted。我们的想法是将这个逻辑转移到负载平衡代理中,这里有一些很好的理由这样做:

  1. 消除了技术债务-如果您将速率限制逻辑与应用程序逻辑结合在一起,那么您就拥有了不需要的技术债务。您可以解除并转移
  2. 效率收益的债务-您正在上游卸载逻辑,这意味着您的所有计算资源都专门用于计算。您可以更好地预测
  3. 安全性-众所周知,应用层(请求-响应)攻击正在上升,包括拒绝服务。通过利用具有更大连接容量的上游代理,您可以阻止这些攻击,因为它们永远不会接近实际的服务器。
票数 6
EN

Stack Overflow用户

发布于 2016-08-17 19:48:34

如果访问API的唯一方法是通过您管理的UI客户端,那么您可以在客户端代码( web应用程序中为javascript)上添加检查,以便仅在该用户未超过限制时进行调用。否则就没有办法了,因为用户总是可以访问您的API,而您在服务器级别所能做的唯一事情就是检查是否将错误或有效结果作为API响应的一部分发送。

票数 0
EN

Stack Overflow用户

发布于 2016-08-17 19:50:00

为了限制堆栈,这意味着您需要保持状态,至少基于某些特定的客户端标识。这可能需要您维护一个中央计数器,例如db (cassandra),它可以让您查看每分钟的当前请求计数,然后在java过滤器中,您可以根据需要限制请求计数。

或者,如果您可以跟踪客户端的会话,那么您可以跟踪并使用粘性会话,强制客户端在客户端会话期间使用特定节点,因此您可以简单地在java过滤器中跟踪每个客户端的请求数量,并发送503代码或更相关的内容。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38995643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档