gateway网关配置入门
服務(wù)網(wǎng)關(guān)Gateway
API 網(wǎng)關(guān)出現(xiàn)的原因是微服務(wù)架構(gòu)的出現(xiàn),不同的微服務(wù)一般會(huì)有不同的網(wǎng)絡(luò)地址,而外部客戶端可能需要調(diào)用多個(gè)服務(wù)的接口才能完成一個(gè)業(yè)務(wù)需求,如果讓客戶端直接與各個(gè)微服務(wù)通信,會(huì)有以下的問題:
破壞了服務(wù)無狀態(tài)特點(diǎn)。
為了保證對外服務(wù)的安全性,我們需要實(shí)現(xiàn)對服務(wù)訪問的權(quán)限控制,而開放服務(wù)的權(quán)限控制機(jī)制將會(huì)貫穿并污染整個(gè)開放服務(wù)的業(yè)務(wù)邏輯,這會(huì)帶來的最直接問題是,破壞了服務(wù)集群中REST API無狀態(tài)的特點(diǎn)。
從具體開發(fā)和測試的角度來說,在工作中除了要考慮實(shí)際的業(yè)務(wù)邏輯之外,還需要額外考慮對接口訪問的控制處理。
無法直接復(fù)用既有接口。
當(dāng)我們需要對一個(gè)即有的集群內(nèi)訪問接口,實(shí)現(xiàn)外部服務(wù)訪問時(shí),我們不得不通過在原有接口上增加校驗(yàn)邏輯,或增加一個(gè)代理調(diào)用來實(shí)現(xiàn)權(quán)限控制,無法直接復(fù)用原有的接口。
以上這些問題可以借助 API 網(wǎng)關(guān)解決。API 網(wǎng)關(guān)是介于客戶端和服務(wù)器端之間的中間層,所有的外部請求都會(huì)先經(jīng)過 API 網(wǎng)關(guān)這一層。也就是說,API 的實(shí)現(xiàn)方面更多的考慮業(yè)務(wù)邏輯,而安全、性能、監(jiān)控可以交由 API 網(wǎng)關(guān)來做,這樣既提高業(yè)務(wù)靈活性又不缺安全性,典型的架構(gòu)圖如圖所示:
快速開始
引入依賴
已引入,如下。pom.xml中的依賴:
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></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>編寫路由規(guī)則
為了演示路由到不同服務(wù),這里把消費(fèi)者和生產(chǎn)者都配置在網(wǎng)關(guān)中
application.yml
server:port: 8090 spring:cloud:gateway:routes:- id: nacos-consumeruri: http://127.0.0.1:8080predicates:- Path=/hi- id: nacos-provideruri: http://127.0.0.1:8070predicates:- Path=/hello啟動(dòng)測試
通過網(wǎng)關(guān)路徑訪問消費(fèi)者或者生產(chǎn)者。
路由規(guī)則詳解
基本概念:
-
Route:路由網(wǎng)關(guān)的基本構(gòu)建塊。它由ID,目的URI,斷言(Predicate)集合和過濾器(filter)集合組成。如果斷言聚合為真,則匹配該路由。
-
Predicate:這是一個(gè) Java 8函數(shù)式斷言。允許開發(fā)人員匹配來自HTTP請求的任何內(nèi)容,例如請求頭或參數(shù)。
-
過濾器:可以在發(fā)送下游請求之前或之后修改請求和響應(yīng)。
路由根據(jù)斷言進(jìn)行匹配,匹配成功就會(huì)轉(zhuǎn)發(fā)請求給URI,在轉(zhuǎn)發(fā)請求之前或者之后可以添加過濾器。
?
總結(jié)
以上是生活随笔為你收集整理的gateway网关配置入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。