我听说服务器可以处理的请求数是有限制的。
因此,如果来自客户端的请求大于人数,人们会将请求排队。
所以我有两个问题:
1 什么时候
如何决定是否需要对请求进行排队?如何测量最大数?
2 如何
如果队列是不可避免的,那么队列应该在哪里完成?
对于使用 spring web mvc 作为框架的 J2EE 应用程序,我想知道队列是否应该放在Controller
orModel
或DAO
?
3 有没有一种可以避免排队但继续提供服务的想法?
我听说服务器可以处理的请求数是有限制的。
因此,如果来自客户端的请求大于人数,人们会将请求排队。
所以我有两个问题:
1 什么时候
如何决定是否需要对请求进行排队?如何测量最大数?
2 如何
如果队列是不可避免的,那么队列应该在哪里完成?
对于使用 spring web mvc 作为框架的 J2EE 应用程序,我想知道队列是否应该放在Controller
orModel
或DAO
?
3 有没有一种可以避免排队但继续提供服务的想法?
首先你必须在服务器上建立你的限制实际上是。它可能是对消息频率的限制,即。也许您只能每秒发送 10 个请求。如果是这种情况,那么您需要计算您在一秒钟内发送了多少条消息,然后在您发送请求之前检查您是否会违反此限制,如果这是真的,那么您必须线程等到第二个结束。如果不是您可以免费发送请求。该线程将从出站消息队列中读取。
如果服务器限制以其他方式确定,即根据其当前负载动态确定,这听起来可能是您的情况,则必须连续提供请求限制,您必须对其进行处理以确定当前限制。一旦有了这个限制,您就可以按照第一段中提到的相同方式处理请求。
至于将队列和相关逻辑放在哪里,我会把它放在控制器中。
我认为没有办法避免排队,您被迫限制您的请求,因此您必须在内部对您的出站请求进行排队,以免它们丢失,并将在将来的某个时间处理。