9.1.1 使用 Spring Cloud Gateway 引导边缘服务器

Polar Bookshop 系统需要一个边缘服务器来将流量路由到内部 API 并处理多个跨切面关注点。你可以从 Spring Initializr(https://start.spring.io)初始化新的 Edge Service 项目,将结果存储到新的 edgeservice Git 仓库中,并推送到 GitHub。初始化参数如图 9.2 所示。

提示: 在本章的 begin 文件夹中,你会找到一个 curl 命令,可以在终端窗口中运行。它会下载一个包含所有所需代码的 zip 文件,无需在 Spring Initializr 网站上手动生成。

图 9.2 初始化 Edge Service 项目的参数

自动生成的 build.gradle 文件的依赖部分如下:

dependencies {
 implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
 testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

这些是主要依赖:

  • Spring Cloud Gateway(org.springframework.cloud:spring-cloud-starter-gateway)——提供将请求路由到 API 和跨切面关注点(如容错、安全和监控)的工具。它构建在 Spring 响应式技术栈之上。
  • Spring Boot Test(org.springframework.boot:spring-boot-starter-test)——提供多个用于测试应用程序的库和工具,包括 Spring Test、JUnit、AssertJ 和 Mockito。它会自动包含在每个 Spring Boot 项目中。

Spring Cloud Gateway 的核心是一个 Spring Boot 应用程序。它提供了我们在前面章节中使用的所有便利功能,如自动配置、嵌入式服务器、测试工具、外部化配置等。它还构建在 Spring 响应式技术栈之上,因此你可以使用前一章学到的关于 Spring WebFlux 和 Reactor 的工具和模式。让我们从配置嵌入式 Netty 服务器开始。

首先,将 Spring Initializr 生成的 application.properties 文件(edgeservice/src/main/resources)重命名为 application.yml。然后打开文件,按照前一章学到的方式配置 Netty 服务器。

代码清单 9.1 配置 Netty 服务器和优雅关闭

# 服务器接受连接的端口
server:
 port: 9000

 netty:
 # 与服务器建立 TCP 连接的超时时间
 connection-timeout: 2s
 # 如果没有数据传输,关闭 TCP 连接前的等待时间
 idle-timeout: 15s

 # 启用优雅关闭
 shutdown: graceful

spring:
 application:
 name: edge-service
 lifecycle:
 # 定义 15 秒的宽限期
 timeout-per-shutdown-phase: 15s

应用程序已设置完成,你可以继续探索 Spring Cloud Gateway 的功能。

results matching ""

    No results matching ""