java - 微服务部署——简单的 jar 与 Docker 容器

标签 java docker war microservices continuous-deployment

我即将部署一组基于JAVA的微服务。 我很困惑是否:

  1. 通过“java -jar [JAR_NAME]”将它们作为简单的 jar 运行
  2. 在基于 JAVA 的 Docker 容器中运行它们。
  3. 将它们视为一场 war 。

请向我提供每种实现的优点和缺点,因为如果我使用建议的最佳方法,这将使我省去很多麻烦:)

提前致谢。

最佳答案

绝对是 Docker。使用容器化可以为您提供最大的灵活性。

在第一种方法中,您的 jar 依赖于 Java。每当您创建新的虚拟机时,您都需要安装一组固定的软件来支持您的应用程序。

第二种方法的好处,

首先,所有内容都将放在一个容器中。

您可以在容器中安装所有必需的软件,并且该容器可以在任何虚拟机中使用。您可以灵活地为每个微服务使用您选择的 java。只需安装 docker,一切就可以正常工作了。

第二,开发产品平等

如果您非常关注微服务架构并且12-factor应用。那么docker有助于支持很多因素。 您的 java 和其他软件在您的所有环境中都是独一无二的。这意味着由于运行时环境的某些版本不匹配,您永远不会感到惊讶它是否在 QA 中工作而不是在 Prod 中工作。

第三、灵活性

如果您进入微服务架构,那么为什么只选择 java.lang.您还可以使用 GO、Python 或其他语言。此时,与其在每个虚拟机上为每个平台安装运行环境,不如在容器中拥有微服务非常有用。

最后,部署简便性

您可以使用 docker-compose 或 docker swarm 在单个命令中运行 100 个 mivroservice。

关于java - 微服务部署——简单的 jar 与 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48030343/

相关文章:

java - 在 grails war 中包括 Liberation .ttf 字体?

requirejs - 在war中打包requirejs优化文件

java - 尝试从命令行构建,并生成 WAR 文件

java - oncreate 中的 Textwatcher android

java - Spring Security - permitAll() 不允许未经身份验证的访问

monitoring - docker容器中的 Graphite 安装 - 卷查询

docker - 为什么我得到一个没有 IP 地址的 docker 容器?

java - 检测 Windows 10 上的 Java VM 架构

java - 在testng测试中模拟通过CAS登录的用户

docker - 在 docker 镜像中运行 kubectl