Algorithm 处理请求超时导致的处理开销

Algorithm 处理请求超时导致的处理开销,algorithm,Algorithm,考虑一个在服务器上为客户c1运行的服务,但是客户c1在秒后超时,原因是什么,所以客户再次发出相同的请求,所以服务器正在运行重复查询,因此它超载,请解决此问题。请帮帮我 我假设您在服务器端,因此无法控制来自同一客户端的多个请求 每个客户端都应该有一个与之关联的IP地址。在负载平衡器(如果有)或服务器中,您需要保留内存缓存,以便跟踪所有请求、它们的IP地址、发起请求时的时间戳以及请求处理完成时的时间戳。接下来,您将定义和适当的时间度量-对于您的所有请求,它应该接近处理时间的70-80%。比如说X秒

考虑一个在服务器上为客户c1运行的服务,但是客户c1在秒后超时,原因是什么,所以客户再次发出相同的请求,所以服务器正在运行重复查询,因此它超载,请解决此问题。请帮帮我

我假设您在服务器端,因此无法控制来自同一客户端的多个请求

每个客户端都应该有一个与之关联的IP地址。在负载平衡器(如果有)或服务器中,您需要保留内存缓存,以便跟踪所有请求、它们的IP地址、发起请求时的时间戳以及请求处理完成时的时间戳。接下来,您将定义和适当的时间度量-对于您的所有请求,它应该接近处理时间的70-80%。比如说X秒

现在,在loadbalancer/服务器上接受任何请求之前,您需要在此内存缓存中检查同一IP是否发送了相同的请求,以及自上次请求以来经过的时间是否小于X。如果是,请不要接受此请求,而是发送一个自定义错误,说明如下内容“以前的请求仍在处理中。请稍后再试”

如果IP地址不足以识别客户机,因为同一客户机可能会向服务器上的不同端点发送不同服务的请求,那么您需要存储另一个标识符,该标识符可能是一种令牌/会话标识符,例如c1或客户id。理想情况下,客户只能从1发送1个请求在任意1个时间点发送到端点的IP地址。如果您有移动和web接口,则可以将频道类型(web/mobile/tablet)以及添加到标识参数列表中

现在,组合-customer id(c1)、IP地址、请求URL、请求时间、通道类型对于传入的请求始终是唯一的。使用缓存中所有这些参数的键来唯一地获取请求的信息,并验证是开始处理请求还是发送自定义错误消息以防止服务器因重新请求而过载,应该可以解决此问题上面定义的问题


注意-“S”秒,即客户端超时-考虑到客户端超时不在我们的控制范围内-不应涉及服务器端,也不会影响我上面详述的设计。

非常感谢Dhruv。它提供了丰富的信息,并且富有成效。