要构建微服务,Java是一个非常好的选择。如何在容器中使用Java构建微服务?本文为你讲述了三种构建方案,无论是哪种方案,要实现微服务,使用Java生态圈的组件都是经过业界验证的。
1. 在Java生态系统中构建微服务的策略有三种,分别为:无容器、自成容器、外置容器。
2. 以无容器的方式提供微服务,会把整个应用打包,包含所有依赖,打进一个fat JAR包中。
3. 自成容器的微服务同样也是打成单个JAR包,JAR包中会包含带有第三方类库的嵌入式框架。
4. 外置容器的微服务方式,会把整个Java EE容器和服务的实现打包进一个Docker容器。
基于微服务的架构给架构师和开发者带来了新的挑战,不断出现的新语言和开发工具使我们得以应对这个挑战。Java也不例外,本文将探索在Java生态系统中构建微服务的新思路。
本文不讨论微服务的好坏,也不讨论你是否应该一开始就以微服务架构来设计应用,或者是否应该将已有的庞大应用重构成微服务架构。
这里讨论的方法并不是仅有的方法,但它们会为我们看到其他可能带来启发。虽然本文的重点是Java生态系统,但其中的概念对其他语言和技术也通用。
我在本文命名了几种方式为“无容器”、“自成容器”、“外置容器”。这些术语并未被广泛使用,但是它们能足以区分每种方法的特点,我会在以下小节中讨论。
在无容器的方式中,开发者把JVM上的所有组件都看作应用的一部分。
无容器的方式使用单个JAR包部署(所谓的”fat JAR部署”),意味着,这个应用以及它所有的依赖,都被打包成一个JAR文件,这个JAR可被作为独立的Java进程启动。