gpt4 book ai didi

java - 当客户端代码运行在多台机器上时,如何保证服务调用的上限?

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:43 25 4
gpt4 key购买 nike

假设我有一个带有 API getName(String id) 的 Restful 服务 X。我的代码部署到负载均衡器后面的 5 台机器上。相同的客户端代码在这些机器上运行,并且在某个地方为 getName(String) api 调用服务 X。该服务设置了每秒最多处理 3 个调用的限制。假设请求的周转时间为 200 毫秒,我如何确保我的客户端不会超过服务器的 3 TPS 限制?我没有让我的客户相互沟通的机制。如何避免服务器端的限制。如果我将机队规模从 5 增加到 10 或 15 会怎样?有什么我可以做的吗?

诸如截断指数退避之类的东西对我有用吗?

最佳答案

您只需保存 session 中最后 3 个请求的请求到达时间。然后检查第四个请求是否在该 1 秒窗口内。

假设 t0 是该时间线中的第 4 个请求(时间以毫秒为单位),

...--t3-----t2-----t1----t0----

if ((t0 - 1000) > t3) {
//4th req within 1 sec, so process the request
} else {
//return HTTP status code 502(service temporarily overloaded)
}

如果您想限制负载均衡器:一种解决方案是使用所有 API 实例通用的一些 API/存储。

关于java - 当客户端代码运行在多台机器上时,如何保证服务调用的上限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41414208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com