比较解决方案
我们介绍了 Java 应用程序最典型的部署类型。 现在,根据所需的部署类型,让我们看看哪些 Azure 服务最能正常工作。
Azure 容器应用 (Azure Container Apps)
Azure 容器应用使你能够专注于构建容器化 Java 应用程序(无论是单体应用程序还是微服务应用程序),而无需管理基础结构。 你可以部署 JAR、WAR,甚至源代码,平台会根据需求自动优化内存并缩放你的应用程序。 它还集成了用于 JVM 故障排除的高级诊断功能,确保 Java 应用高效运行。
此外,Azure 容器应用还支持 Spring Cloud 服务注册表和 Spring Cloud 配置服务器等托管 Spring 组件,从而提供无缝 Spring 集成。 作为 Azure 生态系统的一部分,它可以通过经济高效的缩放和复杂的内存管理来处理企业工作负荷,使其非常适合传统和现代应用程序体系结构。
Azure 应用服务
Azure 应用服务是 Azure 提供的即服务(PaaS)解决方案。 它提供易于使用的服务,用于运行具有自动 OS 和 Java 虚拟机(JVM)更新和修补程序的 Java Web 应用程序,以及自动缩放或监视。
应用服务可以运行任何可执行的 JAR 文件,这使得它成为运行简单 Java 整体式应用程序的 Azure 容器应用的替代方法。
它还可以在常用应用程序服务器(如 Apache Tomcat 或 Red Hat JBoss)上部署任何 WAR 应用程序。 此功能使其成为在 Azure 上运行 Jakarta EE 应用程序的最佳解决方案。
Azure Functions(Azure 功能服务)
Azure Functions 是 Azure 提供的无服务器平台,它支持运行 Java 工作负载。
在 Azure Functions 上运行 Java 应用程序通常需要一些次要的配置和设置。 从本质上说,无服务器函数的生存时间很短(通常为几分钟),因此传统上使用的一些服务可能不像 Azure 应用服务那么高效或实用。
因此,Azure Functions 是为需要大量可伸缩性的应用程序定制的。 可以定期停止它们以降低成本,并且可以纵向扩展以响应高负载。
Azure Kubernetes 服务
Azure Kubernetes 服务(AKS)是 Azure 提供的托管和保护 Kubernetes 解决方案。 它可以运行任何 Docker 映像,并因属于整个 Kubernetes 生态系统而受益。 如果要以任何语言(包括 Java)交付云原生应用程序,AKS 效果良好。
如果工作负荷不均匀,或者想要精确控制环境,Azure Kubernetes 服务是一个很好的解决方案。 AKS 运行 Java 工作负载良好,但需要生成和维护 Docker 映像。
Azure 虚拟机
在 Azure 上运行 VM 可提供最大的灵活性和各种选项。 可以在多个作系统(通常是 Windows 和主要 Linux 分发版)之间进行选择。 你可以自带软件或使用某些提供的映像。
具体而言,对于 Java,主要使用 VM 来:
- 在 Windows 或 Linux 上手动安装和运行 Java Web 应用程序。
- 安装并运行 Docker 甚至 AKS 以运行包含 Java Web 应用程序的映像。
- 使用某个受支持的产品/服务(例如 Oracle WebLogic)在 VM 上运行 Java Web 应用程序。
使用 Azure VM 时,可以安装和运行的内容没有限制,因为可以完全控制这些 VM。 不过,VM 的主要缺点是需要维护和保护它们。 对于 VM,此维护工作由你负责。