首页 > 解决方案 > 使用 Fat Jars 优于 Container 的优势

问题描述

我想知道两者之间的区别,以及根据行业标准目前使用的更多。我尝试在网上查找资源,但关于 Fat Jars 的内容非常少,而且两者之间几乎没有任何对比。

标签: javadockerdeploymentjarcontainers

解决方案


乍一看似乎没什么大不了的。原因在于 Java 打包系统非常成熟,并且经过多年的发展壮大。许多其他生态系统并没有从中受益,但可以从打包到容器映像中受益匪浅。但容器不仅仅是包装。包装几乎可以被认为是它的副作用。

除其他外,使用容器而不是简单的 Fat JARS 的一些好处是:

简化的基础设施

对于围绕微服务构建的大型(或中型)企业,很可能并非所有人都使用相同的语言和工具。容器提供了一种以相同方式部署所有这些不同事物的可预测方式,因此它极大地简化了基础架构,从而显着降低了公司成本。当部署到云中时,这一点变得更加重要,尤其是在多云提供商的场景中,在这种情况下,由 Kubernetes 等软件提供的容器编排可以毫不费力地提供很大帮助。

一致性

容器相对于常规 JAR 的另一个好处是跨环境的一致性。例如,假设您将 JAR 部署到 DEV(运行 Java 8)中,然后部署到 PROD(运行 Java 10)中。由于某种原因,JVM 的行为不同,可能是因为默认垃圾收集器或其他原因,导致您的程序在两种环境中的行为不同。当您通过容器镜像部署时,相同的镜像将在不同的环境中使用,因此将始终使用相同的 Java 版本,从而减少出错的可能性。

资源隔离

另一个好处是资源隔离。容器可以确保您的应用程序仅“看到”预定数量的内存和 CPU。实际上,Java 10 在这方面有一些改进,您可以在此处阅读更多信息。

希望这可以为这个问题提供一个更好的观点。


推荐阅读