4

我正在开发一个 Java 中的 Web 应用程序,它通过 AJAX 调用从 servlet 获取数据。

该应用程序具有几个页面元素,它们以相当快的间隔从服务器获取新数据。

有很多用户,对服务器的需求可能会变得相当高,所以我很好奇:

哪种方法提供最佳性能:

许多 servlet(每种类型的数据请求一个)?

或者:

一个可以处理所有请求的 servlet?

4

6 回答 6

11

拥有多个 servlet 没有性能原因。在 Web 应用程序中,无论有多少请求,都只会实例化一个 servlet 类的实例。请求不是序列化的,它们是并发处理的,因此您的 servlet 需要是线程安全的。

于 2008-10-15T03:07:09.057 回答
2

struts 框架对应用程序中的所有内容都使用一个 servlet。你的东西插入到那个 servlet 中。如果它对他们有用,它可能对你有用。

于 2008-10-15T03:13:17.747 回答
1

拥有多个服务的一个可能原因是,如果您将来需要扩展到多个服务器来处理负载,那么将单独的服务移动到它自己的服务器上比在一切都在“幕后”进行更容易一项服务。

话虽如此,如果您有多个 servlet,则会有额外的维护开销,因此需要平衡未来的灵活性和较低的可维护性。

于 2008-10-15T03:42:15.210 回答
1

如果您使用多个 servlet,则没有性能增强,因为每个 servlet 请求都在单独的线程中处理,前提是它不是单线程的。

但是保持代码的模块化和分离,您可以拥有多个 servlet。

于 2008-10-15T03:58:30.263 回答
0

就像 Tony 说的那样,真的没有理由使用多个 servlet,除非您需要分解一个复杂的 Java Servlet 类或者可能实现一个拦截过滤器。

于 2008-10-15T03:19:25.210 回答
0

我相信您知道,只要您在 web.xml 文件中为您的应用程序注册不同的节点,您就可以拥有同一个 servlet 的多个实例——即,假设您想这样做。

除此之外,据我了解,您可能会从彗星架构中受益——http: //en.wikipedia.org/wiki/Comet_(programming)
在一些 servlet 容器上已经有一些 Comet 的实现——这里看看如何使用 Ajax 和 Comet—— http://www.ibm.com/developerworks/java/library/j-jettydwr/。在决定你的架构之前,你应该学习。

BR,
~A

于 2008-10-15T05:55:29.607 回答