我即将部署一组基于 JAVA 的微服务。 我很困惑是否:
- 通过"java -jar [JAR_NAME]"将它们作为简单的jar运行
- 在基于 JAVA 的 docker 容器中运行它们。
- 将它们作为战争运行。
请为我提供每种实现的优缺点,因为如果我使用建议的最佳方法,这将为我省去很多麻烦:)
提前谢谢。
绝对是 Docker。使用容器化可为您提供最大的灵活性。
在你的第一种方法中,jar依赖于Java。每当创建新 VM 时,都需要安装修复软件集来支持应用程序。
第二种方法的好处,
首先,所有内容都将放在单个容器中。
可以在容器中安装所有必需的软件,并且该容器可以是任何 VM 中的用户。您可以灵活地为每个微服务使用您选择的 Java。只需安装 docker,一切都会正常工作。
二、开发产品奇偶校验
如果您非常喜欢微服务架构和 12 因素应用程序。然后 docker 有助于支持很多因素。 您的 Java 和其他软件在您的所有环境中都将是独一无二的。这意味着由于运行时环境的某些版本不匹配,您永远不会感到惊讶,无论它是否在 QA 中工作而不是在 Prod 中工作。
三、灵活性
如果你进入微服务架构,那么为什么只有Java。你也可以使用GO,Python或其他语言。此时,与其在每个 VM 上为每个平台安装运行时环境,不如在容器中拥有微服务非常有用。
最后,易于部署
您可以使用 docker-compose 或 docker swarm 在单个命令中运行 100 个 mivroservice。