3.2 使用内嵌服务器

使用 Spring Boot,您可以构建不同类型的应用(例如 Web 应用、事件驱动应用、Serverless 应用、批处理应用和任务应用),它们各自具有不同的用例和模式。在云原生环境中,它们都共享一些共同的特点:

  • 它们是完全自包含的,除了运行时之外没有外部依赖。
  • 它们被打包为标准的、可执行的制品。

以 Web 应用为例。传统上,您会将其打包为 WAR 或 EAR 文件(用于打包 Java 应用的归档格式),并部署到 Tomcat 等 Web 服务器或 WildFly 等应用服务器上。对服务器的外部依赖会限制应用本身的可移植性和演进能力,并增加维护成本。

在本节中,您将看到如何使用 Spring Boot、Spring MVC 和内嵌服务器在云原生 Web 应用中解决这些问题,但类似的原则也适用于其他类型的应用。您将了解传统应用与云原生应用之间的差异、Tomcat 等内嵌服务器的工作原理,以及如何配置它。我还会阐述 15-Factor 方法论中关于服务器、端口绑定和并发的一些指导原则:

  • 端口绑定 —— 与依赖执行环境中可用外部服务器的传统应用不同,云原生应用是自包含的,通过绑定到一个可根据环境配置的端口来导出其服务。
  • 并发 —— 在 JVM 应用中,我们通过线程池中的多个线程来处理并发。当达到并发限制时,我们倾向于水平扩展而非垂直扩展。与其向应用添加更多计算资源,不如部署更多实例并在它们之间分配工作负载。

遵循这些原则,我们将继续开发 Catalog Service,确保它是自包含的并打包为可执行 JAR。

服务器!到处都是服务器!

到目前为止,我使用了应用服务器和 Web 服务器这两个术语。稍后,我还会提到 Servlet 容器。它们有什么区别?

  • Web 服务器 —— 处理来自客户端的 HTTP 请求并回复 HTTP 响应的服务器,例如 Apache HTTPD。
  • Servlet 容器 —— Web 服务器的一个组件,为使用 Java Servlet API 的 Web 应用(如 Spring MVC 应用)提供执行上下文。Tomcat(Catalina)就是一个例子。
  • 应用服务器 —— 为不同类型的应用提供完整执行环境(如 Jakarta EE)并支持多种协议的服务器,例如 WildFly。

results matching ""

    No results matching ""