docker - 哪个应用程序容器更适合 Docker 容器?

标签 docker jboss7.x tomcat8

我们 future 的架构是向 docker/micro services 发展。目前我们正在使用 JBoss EAP 6.4(有可能升级到 EAP 7)和 Tomcat。

根据我的说法,JEE 容器对于微服务环境来说太重了(速度慢、内存更多、维护成本更高等)。但是,有人告诉我 EAP 7 速度很快,重量很轻,可用于开发微服务。在为 docker/microservices 决定 EAP 7 还是 Tomcat 8 时,您的意见是什么?成本和速度将是考虑因素。

最佳答案

EAP7 vs Tomcat 8 是一个古老的问题,被多次回答 here , herehere .

Tomcat 只是一个 Web 容器,而 EAP7 是一个应用程序服务器,它提供所有 Java EE 7 功能,例如持久性、消息传递、Web 服务、安全性、管理等。EAP7 有两个配置文件 - Web Profile 和 Full Profile。 Web Profile 是更精简的版本,仅包含构建 Web 应用程序通常所需的相关实现。如您所料,完整配置文件包含该平台的全部荣耀。因此,使用 EAP 7 Web Profile 将帮助您减少相当多的臃肿。

使用 Tomcat,您必须使用 Spring 之类的东西来带来等效的功能并将所有相关的 JAR 打包到您的应用程序中。

当您开始一个全新的项目并且手头有 Java EE 或 Spring 资源时,这些讨论通常很有帮助。以下是您可以考虑使用 EAP7 的原因:

  • 您已经在使用 EAP 6.4。迁移到 EAP 7 将是无缝的。使用 Docker 只是打包应用程序的另一种方式。您现有的所有监控、集群、日志记录将继续工作。如果你要使用 Tomcat,那么你必须学习 Spring 的做事方式。如果你有时间和资源并且愿意尝试,你也可以走这条路。但是想想你想从中获得什么?
  • EAP 7 针对容器和云部署进行了优化。特别是,它可作为 OpenShift 服务提供,因此您知道它可以在 OOTB 中运行。
  • 与 EAP 6.4 相比,EAP 7 将在延迟和吞吐量方面提供不错的性能提升。阅读 https://access.redhat.com/articles/2607521更多细节。

  • 您也可以考虑TomEE .它们提供与 Tomcat 集成的 Java EE 堆栈。

    正如@Federico 推荐的那样,另一种选择是考虑使用 WildFly Swarm .然后,您就可以真正开始定制您想要的 Java EE 平台的哪些部分了。您的部署模型正在使用 JAR 文件。

    至于使用 Docker 打包,它们都提供了一个基础镜像,您需要将您的应用程序捆绑在其中。以下是将 Docker 镜像用于微服务的几个重要注意事项:
  • Docker 镜像的大小:容器可能会意外死亡,或者编排框架可能决定将其重新调度到不同的主机上。更大的图像尺寸将需要更长的时间来下载。这意味着您感知的服务启动时间将更多以获得更大的图像。这也意味着应用程序的动态扩展需要更长的时间才能生效。
  • 镜像的启动时间:镜像下载后,容器可能会快速启动,但应用程序“就绪”需要多长时间?

  • 作为个人笔记,我比 Tomcat/Spring 更熟悉 Java EE 堆栈,WildFly 仍然是最喜欢的应用程序服务器。

    关于docker - 哪个应用程序容器更适合 Docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42074504/

    相关文章:

    docker - 尝试使用带有自定义conf.d的docker-compose运行nginx时出错

    java - JBoss 7 应用程序,从 ui 启动/停止?

    mysql - Orbeon Forms 4.3 不使用 MySQL

    Tomcat,server.loader 中的 JAR 未加载

    java - 如何避免登录api中的大数据

    php - Docker和容器之间的连接

    java - org.apache.http.NoHttpResponseException :localhost:2377 failed to respond

    c# - DllImport 在 Docker 上不起作用 - DllNotFoundException

    java - 部署到 JBoss Application Server 7.1 时出现 HikariConnectionProvider ClassNotFoundException

    java - 使用 Shiro 和 Spring WebMVC(Java8、Spring 4.x)从 WebApp 注销所有仍登录的用户