如何最大限度地缩短响应时间,在客户端以极不同的速率发送请求的环境中最大化系统总体性能?

时间:2018-02-27 19:09:52

标签: algorithm networking distributed

在时间敏感的环境中,什么是确保来自所有客户端的请求得到快速公平处理的最佳算法(如果存在对计算资源的竞争,则具有少量待处理请求的客户端将获得高处理优先级,反之亦然)尽可能确保没有浪费服务器计算资源?例如,服务器处理来自2个客户端的请求,客户端A以1req / s的速率发送请求,客户端B以1000req / s的速率发送,假设服务器可以处理1001req / s。请求率仅为平均值,这意味着可以随时发送任意数量的请求。

编辑:所有请求都是同质的,只有一个线程可以实现它们

我最初的做法是使用循环方法,其中每个客户端的请求被放入不同的FIFO队列,服务器以循环方式从每个队列中提取请求。这可以确保服务器始终处理请求,客户端A的请求不会被客户端B过度拥挤。

请评论我的方法并分享您的任何其他想法。

1 个答案:

答案 0 :(得分:0)

我认为您提出的循环处理与任何先发制人机制无关。从这个意义上讲,“公平”的定义起着重要作用。假设公平与您输入的请求越多,如果存在其他请求,则处理的处理请求的数量越少。例如,如果我们有100个请求从客户端A等待,50个请求从客户端B等待,则处理来自客户端A的2个请求,之后您处理来自客户端B的请求,等等。换句话说,包括每个客户端的请求数与您的循环调度程序的请求总数相关。