Spring Cloud實戰 | 第四篇:Spring Cloud整合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對比及技術選型?

四. 項目信息

有來商城youlai-mall 完整項目結構圖

本篇文章涉及項目模塊

工程名 端口 描述
nacos-server 8848 注冊中心和配置中心
youlai-gateway 9999 API網關
youlai-admin 8080 管理平台

版本聲明

Nacos Server: 1.3.2

SpringBoot: 2.3.0.RELEASE

SpringCloud: Hoxton.SR5

SpringCloud Alibaba: 2.2.1.RELEASE 

五. 項目實戰

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實現網關鑒權功能。

本篇完整代碼下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM