1. 程式人生 > 實用技巧 >微服務實戰04:SpringCloud整合Gateway實現API閘道器

微服務實戰04:SpringCloud整合Gateway實現API閘道器

專案背景

微服務實戰系列是基於開源微服務專案 有來商城youlai-mall 版本升級為背景來開展的,本篇則是講述API閘道器使用Gateway替代Zuul,有興趣的朋友可以進去給個star,非常感謝。

什麼是微服務閘道器

微服務閘道器是位於服務之前或者應用程式之前的一個層面,用於保護、增強和控制微服務的訪問。

其常見的作用有:

  1. 鑑權校驗:驗證是否認證和授權
  2. 統一入口:提供所有微服務的入口點,起到隔離作用,保障服務的安全性
  3. 限流熔斷
  4. 路由轉發
  5. 負載均衡
  6. 鏈路追蹤

閘道器如何選型

至於為什麼使用Gateway而放棄Zuul?

SpringCloud 生態提供了兩種API閘道器產品,分別是Netflix開源的Zuu1和Spring自己開發的SpringCloud Gateway,SpringCloud以Finchely版本為分界線,之前版本使用Zuul作為API閘道器,之後更推薦使用Gateway。

Netflix已經在2018年開源了Zuul2,但是SpringCloud已經退出了Gateway,並且在github標識沒有整合Zuul2的計劃。

SpringCloud Gateway和Zuul對比及技術選型?

版本宣告

Nacos Server: 1.3.2

SpringBoot: 2.3.0.RELEASE

SpringCloud: Hoxton.SR5

SpringCloud Alibaba: 2.2.1.RELEASE

整合SpringCloud Gateway

有來商城youlai-mall 完整專案結構圖

本篇文章涉及專案模組

工程名 描述
nacos-server 8848 註冊中心和配置中心
youlai-gateway 9999 API閘道器
youlai-admin 8080 管理平臺

1.新增SpringCloud Gateway依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

2.bootstrap.yml配置資訊

server:
  port: 9999

spring:
  application:
    name: youlai-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true # 啟用自動根據服務ID生成路由
          lower-case-service-id: true # 設定路由的路徑為小寫的服務ID
      routes:
        - id: youlai-auth
          uri: lb://youlai-auth
          predicates:
            - Path=/youlai-auth/**
          filters:
            - StripPrefix=1 # 移除字首 youlai-auth
        - id: youlai-admin
          uri: lb://youlai-admin
          predicates:
            - Path=/youlai-admin/**
          filters:
            - StripPrefix=1

3.微服務介面

youlai-admin新增一個介面方法用來測試閘道器轉發能力

4.閘道器測試

依次啟動專案nacos-server,youlai-admin,youlai-gateway

可以看到當我們請求閘道器的服務路徑http://localhost:9999/youlai-admin/users的時候,路由根據匹配規則

將以/youlai-admin為字首的請求路徑轉發到服務youlai-admin例項上去了。

結語

至此SpringCloud整合Gateaway就成功了,當然這裡只是驗證了API閘道器的路由轉發功能。後面會寫一篇關於SpringCloud Gateaway整合Oauth2實現閘道器鑑權功能。

本篇完整程式碼下載