9

我有几个 webapps 部署到生产环境中。我使用 Tomcat 作为我的 servlet 引擎已有 10 年了。我正在考虑从 deploy-a-war-into-Tomcat 模型中嵌入 Jetty 模型。

这些 webapp 部署在多个服务器上,其中一些是水平扩展的(使用基于 nginx IP 哈希的分区)。

我看到了一些优点:

  • 我可以为特定的 webapp 配置我的 servlet 引擎(而不是为运行多个不同 webapps 的 Tomcat 进行通用配置)

  • 通过在同一主机上运行多个 Jetty 实例(配置为侦听不同的端口)来水平扩展我的 web 应用程序会更容易。我也可以使用 Tomcat 来执行此操作(过去我曾在同一主机上运行多个 tomcat 实例),但我已转向使用 Debian 包(.deb 档案)进行部署,并且使用运行多个 Tomcat 并不容易这种方法。

  • 我的部署包 (.deb) 在构建时更加“完整”,即我不必确保 Tomcat 实例配置正确。

和缺点:

  • 在服务器上运行的 servlet 引擎实例越多,意味着使用的资源越多

  • 我从来没有使用过码头。我认为我的网络应用程序中没有任何特定于 Tomcat 的内容,但我不确定。

我主要关心的是 Jetty 将使用的资源量。如果我有一个运行 4 个 webapps 的 Tomcat 实例,那么运行四个 Jetty 实例的资源(内存/处理器)会有什么区别?

这个问题可能过于开放,但我很想知道我是否忽略了某些东西,或者是否有人有从 Tomcat 迁移到(嵌入式)Jetty 的经验。

4

3 回答 3

2

我发现最容易嵌入 jar 文件的 Web 容器(它仍然是一个有效的 WAR)是 Winstone(http://winstone.sourceforge.net/)。

Jenkins - http://jenkins-ci.org/ - 使用这个容器,所以它已经过压力测试。请注意,它仅是 Servlet 2.4。

于 2011-02-18T17:54:31.250 回答
0

我也习惯了 Tomcat,所以在我的新项目中,我尝试使用 Jetty 来了解它。

在企业环境中(您有生产/测试/开发服务器)我会坚持使用 Tomcat,主要是因为它可以帮助您将代码与配置文件分开(现在我正在将 conf 文件设置在单独的 jar 中,因为这样,当我将更改从测试转移到生产时,他们不必手动更新我将传递给系统管理员的 jar)。

另一个问题是,Jetty 似乎在不久前改变了所有权,并且寻找信息经常让我回到旧版本。

除此之外,使用 Jetty 与 Tomcat 并没有什么不同。必须通过文档来查找所有内容的位置,但结构(如我所见,我没有尝试过任何太复杂的东西)或多或少像 Tomcat。

于 2011-02-18T17:19:47.230 回答
0

好吧,我认为没有直接的答案;

我可能不完全理解“.deb”部分,因为我不是 debian 怪胎 :)

我更喜欢有一个带有许多配置的 tomcat 实例,也就是 CATALINA_HOME 文件夹,您可以在其中指定运行的应用程序和端口,因此您始终可以单独拥有所有配置并在需要时更改 tomcat 实例。

另外,请参阅相关帖子: Jetty:嵌入还是不嵌入?

于 2011-02-18T17:30:25.420 回答