Spring Boot 为所有这些阶段提供开箱即用的支持,并提供插件和模块形式的专用组件。
打包 - 它提供自己的 Maven 支持,将代码和所有依赖项打包为 Uber jar,包括容器本身。为此,您需要添加以下构建插件和一个简单的重新打包目标,该目标重新打包在正常 Maven 打包阶段构建的二进制文件。
部署 - 它配备了不同类型的 Web 容器来支持 servlet/JSP 等 Web 资源的嵌入式部署。最重要的是,它提供了一个可以部署 RESTful 资源的 Jersey 容器。
最新的 DZone 参考卡
GitOps 的要点
Launcher - Spring Boot 使启动应用程序就像运行 Hello World 程序一样简单。只需一行代码即可触发依赖管理、包扫描和容器初始化。
参考代码: microservice-starter-springboot
在研究了所有这些方面之后,可以使用不同的工具和框架来制作这些制品。让我们讨论每个网络服务器和平台。
Tomcat
Tomcat 通常用作部署 Web 应用程序的 Web 容器,但它也可以用作运行打包的微服务的嵌入式容器。为此,需要满足以下条件才能创建包含的微服务。
打包 - 与 Spring Boot 不同,它不提供开箱即用的解决方案来打包您的微服务,但您可以使用 Maven 标准插件(如 assemble 和 Shade)来构建包含所有依赖项并支持主类的 Uber jar体现出来。
部署 - 所有 Tomcat 运行时模块都可以提供一个可以部署和运行 Jersey 容器的依赖项。
启动器 - Tomcat 允许您以编程方式配置端点和容器,并且您可以在控制范围内启动和停止实例。
参考代码: microservice-starter-tomcat
Jetty
Jetty 非常适合部署和运行微服务,因为它主要使用嵌入式容器来运行 Web 应用程序。它也遵循与 Tomcat 相同的模式来运行微服务。
打包 - 它可以利用 Maven 标准插件将代码和依赖项打包到单个 Uber jar 中。
部署 - Jetty 提供了一个 servlet 容器,可以通过 Jersey 容器来填充该容器来提供 Web 服务。
Launcher - 与 Tomcat 一样,它提供了类似的编程 API 来部署 Jersey 容器和 REST 端点。
参考代码: microservice-starter-jetty
Grizzly
Grizzly 是一种不太流行的 Web 容器,但它为 JEE 社区提供了最标准的应用程序服务器。是的,它是 Glassfish 服务器背后的引擎。它确实为构建微服务提供了开箱即用的功能。
打包 - 我们可以使用 Maven 标准插件(例如 assembly 和 Shade)来打包 Web 服务及其依赖项。
部署 - 与 Tomcat 和 Jetty 不同,它为部署使用 Jersey 构建的 Web 服务提供内置支持,并提供标准的基于容器的 Grizzly HTTP 服务。
Launcher - 与 Spring Boot 一样,它提供了一个非常抽象的 API,用于配置 REST 服务并在一行代码中运行容器本身。
参考代码: microservice-starter-grizzly
Netty
Netty 是一个著名的异步和事件驱动的客户端/服务器框架,支持 FTP、SMTP 和 HTTP 等大多数协议,并为 UDP 和 TCP 应用程序提供低级编程。最重要的是,Glassfish 提供了一个特殊的 Jersey 容器,它使用非阻塞 IO 和 HTTP 服务。它可以像 Grizzly 一样用作 Web 服务容器。
打包 - 我们可以使用 Maven 标准插件(例如 assembly 和 Shade)来打包 Web 服务及其依赖项。
部署 - 与 Grizzly 一样,它为部署使用 Jersey 构建的 Web 服务提供开箱即用的支持,并提供基于 Netty HTTP 服务的标准容器。
Launcher - 与 Grizzly 一样,它提供了一个非常抽象的 API,用于配置 REST 服务和运行容器。
参考代码: microservice-starter-netty
Undertow
Undertow 是一个 Web 服务器,为流行的 JBoss AS 提供支持,并且能够作为嵌入式容器运行。它提供精细的 HTTP 和非阻塞 IO 服务。除此之外,它还提供 Servlet 和 Web Socket 实现。它可以用于以类似的方式构建微服务。
打包 - 我们可以使用 Maven 标准插件(例如 assembly 和 Shade)来打包 Web 服务及其依赖项。
部署 - Undertow 提供了一个可与 Jersey Servlet 容器一起使用的 HTTP Servlet 容器。
Launcher - 它还提供了一个编程 API 来部署 Jersey 容器和 REST 端点。