Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Concurrency 何时需要对来自客户端的请求进行排队_Concurrency_Queue - Fatal编程技术网

Concurrency 何时需要对来自客户端的请求进行排队

Concurrency 何时需要对来自客户端的请求进行排队,concurrency,queue,Concurrency,Queue,我听说服务器可以处理的请求数量是有限制的 因此,如果来自客户机的请求大于人们将请求排队的数量 所以我有两个问题: 1何时 如何决定是否需要对请求进行排队?如何测量最大数 2如何 如果队列不可避免,那么队列应该在哪里完成 对于使用SpringWebMVC作为框架的J2EE应用程序,我想知道队列应该放在控制器、模型还是DAO中 3是否有一种方法可以避免排队,但继续提供服务?首先,您必须确定服务器的限制。这很可能是对信息频率的限制,也就是说,你的发送速度可能限制在每秒10个请求。如果是这种情况,那么你

我听说服务器可以处理的请求数量是有限制的

因此,如果来自客户机的请求大于人们将请求排队的数量

所以我有两个问题:

1何时

如何决定是否需要对请求进行排队?如何测量最大数

2如何

如果队列不可避免,那么队列应该在哪里完成

对于使用SpringWebMVC作为框架的J2EE应用程序,我想知道队列应该放在控制器、模型还是DAO中


3是否有一种方法可以避免排队,但继续提供服务?

首先,您必须确定服务器的限制。这很可能是对信息频率的限制,也就是说,你的发送速度可能限制在每秒10个请求。如果是这种情况,那么你需要记录下你在一秒钟内发送了多少条消息,然后在发送请求之前检查你是否会违反此限制,如果这是真的,那么你必须让线程等待,直到第二条消息结束。如果不是你的自由发送请求。此线程将从出站消息队列中读取

如果服务器限制是以另一种方式确定的,即根据其当前负载动态确定的(这听起来像是您的情况),则必须有一个连续的请求限制提要,您必须对其进行处理以确定当前限制。一旦您有了这个限制,您就可以按照第一段中提到的相同方式处理请求

至于把队列和相关逻辑放在哪里,我会把它放在控制器中

我认为没有办法避免排队,您必须限制您的请求,因此您必须在内部对出站请求进行排队,以便它们不会丢失,并在将来的某个时候进行处理