我即将部署一组基于JAVA的微服务。 我很困惑是否:
- 通过“java -jar [JAR_NAME]”将它们作为简单的 jar 运行
- 在基于 JAVA 的 Docker 容器中运行它们。
- 将它们视为一场 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/