【发布时间】:2014-08-28 20:38:18
【问题描述】:
假设在一个高流量的网络服务器上,有来自客户端的不同类型的请求。例如:用户请求与内部/管理类型。 而且,在用户请求中, 有你想更及时服务的人 (因为它们对时间更紧迫,更频繁等)。
处理这些请求的单个 servlet 是“轻量级的”——它看到 每个请求是关于什么的,并立即调用后端进程来处理它。
因此,如果您想对这些请求进行优先级排序,请在服务器上对这些后端进程进行优先级排序——给它们更多的 CPU 时间,为它们分配多个服务器实例,等等。
这里的问题是:是否做同样的事情 servlet 以及这些后端进程是否是一个问题。 我知道 servlet 容器(在本例中为 Tomcat) 有一些机制——虽然我不知道具体是什么/如何。
在这个讨论的一方面——是:编写不同的 servlet 针对不同的客户请求,以便您可以 在服务器级别管理他们的优先级/执行时间。
另一方面——没有,根本没有:
servlet(s) 正在处理请求并分派它们
到相应的进程而不消耗执行时间。
后端流程对时间至关重要。
事实上,这正是 Spring 正在做的事情——
将DispatcherServlet 作为所有传入请求的前端控制器。
作为所有请求的前端控制器的单个 servlet 是健全的架构。
这个讨论是几天前提出的。直到那时, 我站在“不”一边——就在上面的那一段。 但是,我现在还不是很清楚。 我想知道什么是对声称的合理反驳 "管理 servlet 类型的优先级 提高了服务客户端请求的时间性能。”
TIA。
//=============================================== =====
编辑:
如果上面的情况“是”,那么 Spring 是如何判断的 servlet 容器了解不同类型的请求,以便 s.container 可以对它们进行优先级排序?
【问题讨论】:
-
servlet 容器和
DispatcherServlet都不会区分您的请求的语义。容器调度一个线程,该线程将调用DispatcherServlet的service方法,该方法最终将到达您的处理程序。此外,Servlet API 没有指定任何有关请求优先级的行为。
标签: java spring tomcat servlets