Spring Cloud實戰 | 第四篇:Spring Cloud整合Gateway實現API網關

一. 前言

微服務實戰系列是基於開源微服務項目 有來商城youlai-mall 版本升級爲背景來開展的,本篇則是講述API網關使用Gateway替代Zuul,有興趣的朋友能夠進去給個star,很是感謝。git

二. 什麼是微服務網關?

微服務網關是位於服務以前或者應用程序以前的一個層面,用於保護、加強和控制微服務的訪問。github

其常見的做用有:spring

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

三. 網關如何選型?

至於爲何使用Gateway而放棄Zuul?bootstrap

SpringCloud 生態提供了兩種API網關產品,分別是Netflix開源的Zuu1和Spring本身開發的SpringCloud Gateway,SpringCloud以Finchely版本爲分界線,以前版本使用Zuul做爲API網關,以後更推薦使用Gateway。安全

Netflix已經在2018年開源了Zuul2,可是SpringCloud已經退出了Gateway,而且在github標識沒有集成Zuul2的計劃。app

SpringCloud Gateway和Zuul對比及技術選型?負載均衡

四. 項目信息

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

本篇文章涉及項目模塊測試

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

版本聲明ui

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

本篇完整代碼下載

相關文章
相關標籤/搜索