SpringCloud入門(十)統一閘道器Gateway

努力--坚持發表於2024-11-25

  一、閘道器的作用


  Spring Cloud Gateway 是 Spring Cloud 的一個全新專案,該專案是基於 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等響應式程式設計和事件流技術開發的閘道器,它旨在為微服務架構提供一種簡單有效的統一的 API 路由管理方式。

閘道器架構圖:



閘道器的主要作用:

許可權控制:閘道器作為微服務入口,需要校驗使用者是是否有請求資格,如果沒有則進行攔截。

路由和負載均衡:一切請求都必須先經過gateway,但閘道器不處理業務,而是根據某種規則,把請求轉發到某個微服務,這個過程叫做路由。當然路由的目標服務有多個時,還需要做負載均衡。

限流:當請求流量過高時,在閘道器中按照下流的微服務能夠接受的速度來放行請求,避免服務壓力過大。

在SpringCloud中閘道器的實現包括兩種:

gateway
zuul

Zuul是基於Servlet的實現,屬於阻塞式程式設計。而SpringCloudGateway則是基於Spring5中提供的WebFlux,屬於響應式程式設計的實現,具備更好的效能。

  二、搭建閘道器


演示閘道器的基本路由功能。基本步驟如下:

1. 建立SpringBoot工程gateway,引入閘道器依賴
2. 編寫啟動類
3. 編寫基礎配置和路由規則
4. 啟動閘道器服務進行測試

步驟1. 建立SpringBoot工程gateway,引入閘道器依賴

建立springBoot工程gateway ,並引入閘道器依賴

<!--閘道器-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服務發現依賴-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

步驟2. 編寫啟動類

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
public class GatewayApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

步驟3. 編寫基礎配置和路由規則

建立application.yml檔案,

server:
  port: 10010 # 閘道器埠
spring:
  application:
    name: gateway # 服務名稱
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:
      routes: # 閘道器路由配置
        - id: user-service # 路由id,自定義,只要唯一即可
          # uri: http://127.0.0.1:8081 # 路由的目標地址 http就是固定地址
          uri: lb://userservice # 路由的目標地址 lb就是負載均衡,後面跟服務名稱
          predicates: # 路由斷言,也就是判斷請求是否符合路由規則的條件
            - Path=/user/** # 這個是按照路徑匹配,只要以/user/開頭就符合要求


我們將符合Path 規則的一切請求,都代理到 uri引數指定的地址。本示例中,我們將 /user/**開頭的請求,代理到lb://userservice,lb是負載均衡,根據服務名拉取服務列表,實現負載均衡。

路由配置包括:

  路由id:路由的唯一標示

  路由目標(uri):路由的目標地址,http代表固定地址,lb代表根據服務名負載均衡

  路由斷言(predicates):判斷路由的規則,

  路由過濾器(filters):對請求或響應做處理


步驟4. 啟動閘道器服務進行測試

重啟閘道器,訪問http://localhost:10010/user/1時,符合/user/**規則,請求轉發到uri:http://userservice/user/1

得到了響應結果,測試成功。

相關文章