Spring Cloud服務入口Gateway的介紹和使用問題小結
Gateway
問題引入
前?我們通過Eureka, Nacos解決了服務注冊, 服務發(fā)現(xiàn)的問題, 使?Spring Cloud LoadBalance解決了負載均衡的問題, 使?OpenFeign解決了遠程調?的問題.
但是當前所有微服務的接?都是直接對外暴露的, 可以直接通過外部訪問. 為了保證對外服務的安全性,服務端實現(xiàn)的微服務接?通常都帶有?定的權限校驗機制. 由于使?了微服務, 原本?個應?的的多個模塊拆分成了多個應?, 我們不得不實現(xiàn)多次校驗邏輯. 當這套邏輯需要修改時, 我們需要修改多個應?, 加重了開發(fā)?員的負擔.
針對以上問題, ?個常?的解決?案是使?API?關.
API網(wǎng)關
API?關(簡稱?關)也是?個服務, 通常是后端服務的唯???. 它的定義類似設計模式中的Facade模式(門面模式, 也稱外觀模式). 它就類似整個微服務架構的??, 所有的外部客?端訪問, 都需要經(jīng)過它來進?調度和過濾.

?關核心功能:
權限控制: 作為微服務的??, 對??進?權限校驗, 如果校驗失敗則進?攔截
動態(tài)路由: ?切請求先經(jīng)過?關, 但?關不處理業(yè)務, ?是根據(jù)某種規(guī)則, 把請求轉發(fā)到某個微服務
負載均衡: 當路由的?標服務有多個時, 還需要做負載均衡
限流: 請求流量過?時, 按照?關中配置微服務能夠接受的流量進?放?, 避免服務壓?過?
常見網(wǎng)關實現(xiàn)
業(yè)界常?的?關?式有很多, 技術?案也較成熟, 其中不乏很多開源產(chǎn)品, ?如Nginx, Kong, Zuul,
Spring Cloud Gateway等. 下?介紹兩種常?的?關?案.
Zuul
Zuul 是 Netflix 公司開源的?個API?關組件, 是Spring Cloud Netflix ?項?的核?組件之?,它可以和 Eureka、Ribbon、Hystrix 等組件配合使?.
在Spring Cloud Finchley正式版之前, Spring Cloud推薦的?關是Netflix提供的Zuul(此處指Zuul 1.X).然而Netflix在2018年宣布?部分組件進?維護狀態(tài), 不再進?新特性的開發(fā). 這部分組件中就包含Zuul.
Spring Cloud Gateway
Spring Cloud Gateway 是Spring Cloud的?個全新的API?關項?, 基于Spring + SpringBoot等技術開發(fā), ?的是為了替換掉Zuul. 旨在為微服務架構提供?種簡單?有效的途徑來轉發(fā)請求, 并為他們提供橫切關注點, ?如: 安全性, 監(jiān)控/指標和彈性.
在性能??, 根據(jù)官?提供的測試報告, Spring Cloud Gateway的RPS(每秒請求數(shù))是Zuul的1.6倍.
Gateway的使用
創(chuàng)建網(wǎng)關Module

引入網(wǎng)關依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>編寫啟動類
package gateway;
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);
}
}添加Gateway路由配置
server:
port: 8888
spring:
application:
name: gateway
cloud:
nacos:
discovery:
server-addr: 47.98.109.138:8848
gateway:
metrics:
enabled: true
routes:
- id: order-service #路由規(guī)則id, 隨便起, 不重復即可
uri: lb://order-service/ #目標服務地址
predicates: #路由條件
- Path=/order/**,/feign/**
- id: product-service
uri: lb://product-service/
predicates:
- Path=/product/**配置字段說明:
配置字段說明:
• id : ?定義路由ID, 保持唯?
• uri: ?標服務地址, ?持普通URI 及 lb://應?注冊服務名稱 . lb表?負載均衡, 使? lb:// ?
式表示從注冊中?獲取服務地址.
• predicates: 路由條件, 根據(jù)匹配結果決定是否執(zhí)?該請求路由, 上述代碼中, 我們把符合Path規(guī)則的?切請求, 都代理到uri參數(shù)指定的地址.
啟動服務并訪問


到此這篇關于Spring Cloud服務入口Gateway的介紹和使用問題小結的文章就介紹到這了,更多相關Spring Cloud Gateway使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
劍指Offer之Java算法習題精講數(shù)組與字符串題
跟著思路走,之后從簡單題入手,反復去看,做過之后可能會忘記,之后再做一次,記不住就反復做,反復尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質的變化2022-03-03
詳解使用SSM實現(xiàn)簡單工作流系統(tǒng)之實現(xiàn)篇
這篇文章主要介紹了使用SSM實現(xiàn)簡單工作流系統(tǒng)之實現(xiàn)篇,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
SpringBoot接收form-data和x-www-form-urlencoded數(shù)據(jù)的方法
form-data和x-www-form-urlencoded是兩種不同的HTTP請求體格式,本文主要介紹了SpringBoot接收form-data和x-www-form-urlencoded數(shù)據(jù)的方法,具有一定的參考價值,感興趣的可以了解一下2024-05-05
Java SpringBoot詳解集成以及配置Swagger流程
Swagger 是一個規(guī)范和完整的框架,用于生成、描述、調用和可視化 RESTful 風格的 Web 服務??傮w目標是使客戶端和文件系統(tǒng)作為服務器以同樣的速度來更新。文件的方法,參數(shù)和模型緊密集成到服務器端的代碼,允許API來始終保持同步2021-10-10

