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