API 关闭时请求优先级
Request prioritization when an API is down
想象一个 API 有一个名为 /valueableData 的端点。服务器明确表示API的限制是总共500requests/s,每人20requests/s。此服务器不检查您的 IP,因此我可以使用 500 个正常工作的代理制作 500 request/s 而无需 API 离线。现在想象一下,A 发送 1000 requests/s,B 发送 20 requests/s,这导致达到 500 的限制并且 API 下线。一旦 API 重新上线,A 每秒返回多少有效答案,B 返回多少有效答案? server/API 是如何处理的? A 是否每秒返回 480 个有效答案而 B 为 20 个?还是 A 得到了 500 的最大值 answers/s?
这取决于协议。
通常用于 REST 的 HTTP 本身是无状态和客户端启动的,因此不符合要求。
您的方案需要一个协议:
- 知道客户是谁are/were
- 重新上线后无需客户端参与即可推送响应
- 可以优先响应客户请求
我想这样的协议存在或可以使用 WebSocket 并将状态存储在数据库中来实现。
想象一个 API 有一个名为 /valueableData 的端点。服务器明确表示API的限制是总共500requests/s,每人20requests/s。此服务器不检查您的 IP,因此我可以使用 500 个正常工作的代理制作 500 request/s 而无需 API 离线。现在想象一下,A 发送 1000 requests/s,B 发送 20 requests/s,这导致达到 500 的限制并且 API 下线。一旦 API 重新上线,A 每秒返回多少有效答案,B 返回多少有效答案? server/API 是如何处理的? A 是否每秒返回 480 个有效答案而 B 为 20 个?还是 A 得到了 500 的最大值 answers/s?
这取决于协议。
通常用于 REST 的 HTTP 本身是无状态和客户端启动的,因此不符合要求。
您的方案需要一个协议:
- 知道客户是谁are/were
- 重新上线后无需客户端参与即可推送响应
- 可以优先响应客户请求
我想这样的协议存在或可以使用 WebSocket 并将状态存储在数据库中来实现。