還不知道微服務的入口?快看這裡,手把手實戰閘道器元件Gateway,一發入魂~

語言: CN / TW / HK

1、Gateway簡介

Gateway專案提供了一個構建在 Spring 生態系統之上的 API 閘道器,包括: Spring 5、 Spring Boot 2和 Project Reactor。Spring Cloud Gateway 旨在提供一種簡單而有效的方法來路由到 api,併為它們提供交叉關注點,如安全性、監視/度量和彈性。

官網連結直通車gateway

Spring Cloud Gateway 的特點:

  1. 基於 Spring Framework 5、 Project Reactor 和 Spring Boot 2.0構建
  2. 能夠匹配任何請求屬性上的路由。
  3. 基於路由的條件構造器Predicates 和過濾器filter
  4. 斷路器整合。
  5. 整合 Spring Cloud DiscoveryClient
  6. 易於編寫的路由的條件構造器Predicates 和過濾器filter
  7. 請求速率限制
  8. 路由的路徑重寫

那麼我為什麼需要使用gateway閘道器呢?

主要原因是在開發戀愛話術服務和之前的畢設專案服務對應的小程式時,為了方便使用同一個https安全域名,所以把兩個功能的程式碼寫在一個專案裡面,導致每次修改一個功能時會影響另一個服務的使用,沒有達到微服務各司其職的理念,所以打算通過使用gateway閘道器來對專案進行一個重構,最終實現一個域名根據路由分別轉發到不同的後端服務上。

2、建立Gateway專案

2.1 在idea上新建一個springboot專案

在這裡插入圖片描述

2.2 選擇相關引數後點擊下一步

在這裡插入圖片描述

2.3 勾選依賴

在這裡插入圖片描述

2.4 完整的專案結構如下,然後咱們新建一個yml檔案

在這裡插入圖片描述 這個是完整的pom.xml檔案 ```xml

4.0.0 org.springframework.boot spring-boot-starter-parent 2.6.6 com.yinfeng gateway 0.0.1-SNAPSHOT gateway gateway 1.8 2021.0.1 org.springframework.cloud spring-cloud-starter-gateway

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

```

3、配置轉發規則

在咱們之前新建的yml檔案中進行配置 yml spring: application: name: gateway cloud: gateway: routes: - id: test # 轉發的地址 uri: http://127.0.0.1:8888 predicates: # 配置url路徑匹配規則 - Path=/test/** server: port: 8081

4、測試一下

先啟動一個後端服務test

在這裡插入圖片描述 在這裡插入圖片描述

在啟動gateway閘道器服務 在這裡插入圖片描述 通過PostMan訪問咱們閘道器域名和test的路由

在這裡插入圖片描述

可以看到我們的請求能正常轉發到test服務的介面上,也收到了介面的響應,最終完成了咱們的目標。

5、總結

外出打工不易,希望各位兄弟找到自己心儀的工作,虎年發發發! 也希望兄弟們能==關注、點贊、收藏、評論==支援一波,非常感謝大家!