您好,登錄后才能下訂單哦!
Spring Cloud Gateway 服務網關
API 主流網關有NGINX、ZUUL、Spring Cloud Gateway、Linkerd等;Spring Cloud Gateway構建于 Spring 5+,基于 Spring Boot 2.x 響應式的、非阻塞式的 API。同時,它支持 websockets,和 Spring 框架緊密集成,用來代替服務網關Zuul,開發體驗相對來說十分不錯。
Spring Cloud Gateway 是 Spring Cloud 微服務平臺的一個子項目,屬于 Spring 開源社區,依賴名叫:spring-cloud-starter-gateway。
Zuul 是 Netflix 公司的開源項目,Spring Cloud 在 Netflix 項目中也已經集成了 Zuul,依賴名叫:spring-cloud-starter-netflix-zuul。
API 網關
API 網關出現的原因是微服務架構的出現,不同的微服務一般會有不同的網絡地址,而外部客戶端可能需要調用多個服務的接口才能完成一個業務需求,如果讓客戶端直接與各個微服務通信,會有以下的問題:
以上這些問題可以借助 API 網關解決。API 網關是介于客戶端和服務器端之間的中間層,所有的外部請求都會先經過 API 網關這一層。也就是說,API 的實現方面更多的考慮業務邏輯,而安全、性能、監控可以交由 API 網關來做,這樣既提高業務靈活性又不缺安全性。
使用 API 網關后的優點如下:
Spring Cloud Gateway的特征
快速上手
Spring Cloud Gateway 示例源碼
Spring Cloud Gateway 網關路由有兩種配置方式:
在配置文件 yml 中配置
通過@Bean自定義 RouteLocator,在啟動主類 Application 中配置
這兩種方式是等價的,建議使用 yml 方式進配置。
1.pom.xml Maven依賴
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.7.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!--Spring Cloud Gateway 是使用 netty+webflux 實現因此不需要再引入 web 模塊--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
2.application.yml配置
server: port: 8080 spring: cloud: gateway: routes: - id: easy_route # 我們自定義的路由 ID,保持唯一 uri: https://github.com # 目標服務地址 predicates: # 路由條件,Predicate 接受一個輸入參數,返回一個布爾值結果。該接口包含多種默認方法來將 - Path=/smltq/spring-boot-demo
上面這段配置的意思是,配置了一個 id 為 easy_route 的路由規則,當訪問地址 http://localhost:8080/smltq/spring-boot-demo時會自動轉發到地址:https://github.com/smltq/spring-boot-demo 。
3.配置完成啟動項目
在瀏覽器訪問進行測試,當我們訪問 http://localhost:8080/smltq/spring-boot-demo 時會展示如下頁面:
資料
Spring Cloud Gateway 示例源碼
更多路由分發功能參考官網
Spring Boot、Spring Cloud示例學習
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。