柚子快報(bào)激活碼778899分享:Gateway
柚子快報(bào)激活碼778899分享:Gateway
序言
本文給大家介紹一下 Spring Cloud Gateway 的基礎(chǔ)概念以及使用方式。
一、快速入門
1.1 引入依賴
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
上面只引入了三個(gè)依賴:
loadbalancer:負(fù)載均衡器gateway:網(wǎng)關(guān)nacos:注冊中心
1.2 編寫配置
# 配置端口
server:
port: 2091
spring:
application:
name: gateway
cloud:
nacos:
server-addr: localhost:8848
# gateway 配置
gateway:
routes:
- id: user-service
uri: lb://user-service
predicates:
- Path=/test/**
1.3 啟動服務(wù)
1.4 通過 gateway 訪問服務(wù)
我們可以直接訪問 gateway 網(wǎng)關(guān),gateway 可以將請求正確路由到 user-service 從而獲取到正確的請求結(jié)果。
二、Gateway 工作流程
如上圖所示,gateway 的工作流程如下:
在配置文件中首先定義一條路由信息(路由信息包括路由的 id、具體的路由規(guī)則和路由的 uri)請求到達(dá) gateway 網(wǎng)關(guān),首先判斷是否匹配某條路由規(guī)則若匹配路由規(guī)則,就將請求轉(zhuǎn)發(fā)到指定的 uri,處理請求
三、Gateway 配置
spring:
cloud:
gateway:
routes:
- id: user-service
uri: lb://user-service
predicates:
- Path=/test/**
上面是 gateway 的入門配置。我們發(fā)現(xiàn)其核心在:
# id 路由的唯一標(biāo)識,自定義
- id: user-service
# uri 表示當(dāng)匹配路由規(guī)則時(shí),請求的轉(zhuǎn)發(fā)路徑
uri: lb://user-service
# predicates 表示路由匹配規(guī)則
# Path 表示可匹配與當(dāng)前所定義路徑模式匹配的路徑
# 例如:如果請求是 /test/helo 那么與 /test/** 是匹配的
predicates:
- Path=/test/**
四、路由規(guī)則
之前,定義路由信息的時(shí)候,我們發(fā)現(xiàn)最復(fù)雜的應(yīng)該是如何去定義路由的規(guī)則。在實(shí)際的開發(fā)中,我們有各種各樣的開發(fā)需求從而導(dǎo)致了我們需要靈活的去定義路由規(guī)則。在 spring 中提供了如下的方式,讓我們進(jìn)行路由匹配:
名稱說明示例After是某個(gè)時(shí)間點(diǎn)后的請求- After=2037-01-20T17:42:47.789-07:00[America/Denver]Before是某個(gè)時(shí)間點(diǎn)之前的請求- Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]Between是某兩個(gè)時(shí)間點(diǎn)之前的請求- Between=2037-01-20T17:42:47.789-07:00[America/Denver], 2037-01-21T17:42:47.789-07:00[America/Denver]Cookie請求必須包含某些 cookie- Cookie=chocolate, ch.pHeader請求必須包含某些 header- Header=X-Request-Id, \d+Host請求必須是訪問某個(gè) host(域名)- Host=.somehost.org,.anotherhost.orgMethod請求方式必須是指定方式- Method=GET,POSTPath請求路徑必須符合指定規(guī)則- Path=/red/{segment},/blue/**Query請求參數(shù)必須包含指定參數(shù)- Query=name, Jack或者- Query=name
具體使用方式,大家可根據(jù)需要參考官方文檔
五、過濾規(guī)則
gateway 不僅僅只是可以進(jìn)行請求的路由轉(zhuǎn)發(fā),還可以對請求和轉(zhuǎn)發(fā)做一些過濾的操作。例如:
spring:
cloud:
gateway:
routes:
- id: add_request_header_route
uri: https://example.org
# 添加過濾規(guī)則:將 X-Request-red:blue 標(biāo)頭添加到所有匹配請求的下游請求標(biāo)頭中
filters:
- AddRequestHeader=X-Request-red, blue
過濾規(guī)則,spring 官方同樣提供了許多,大家根據(jù)需求自行參考官方文檔:
往期推薦
緩存神器-JetCacheMybatis 緩存機(jī)制為什么 MySQL 單表數(shù)據(jù)量最好別超過 2000wIoC 思想簡單而深邃ThreadLocal
柚子快報(bào)激活碼778899分享:Gateway
文章來源
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。