Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技術開發(fā)的網(wǎng)關,Spring Cloud Gateway旨在為微服務架構提供一種簡單而有效的統(tǒng)一的API路由管理方式。Spring Cloud Gateway作為Spring Cloud生態(tài)系中的網(wǎng)關,目標是替代Netflix ZUUL,其不僅提供統(tǒng)一的路由方式,并且基于Filter鏈的方式提供了網(wǎng)關基本的功能,例如:安全,監(jiān)控/埋點,和限流等。
站在用戶的角度思考問題,與客戶深入溝通,找到昔陽網(wǎng)站設計與昔陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋昔陽地區(qū)。
可能有同學就要問了,不是已經(jīng)有Zuul了嗎,為什么又搞了一個網(wǎng)關,這更新的節(jié)奏確實很快哈,沒精力還真學習不過來。
之所以新搞了一個網(wǎng)關,是因為Zuul基于servlet 2.5 (works with 3.x),使用阻塞API。它不支持任何長期的連接,如websocket。
Gateway建立在Spring Framework 5,Project Reactor和Spring Boot 2上,使用非阻塞API。支持Websockets,因為它與Spring緊密集成,所以它會是一個讓開發(fā)者有更好體驗的框架。當然性能的提升是肯定的,不然完全沒必要重新搞一個啊,只不過Zuul2出來的太遲了,自己已經(jīng)搞了一個,所以不太可能會將Zuul2集成到Spring Cloud中了。
關于性能這塊的比較可以參考我周兄的文章《糾錯帖:Zuul & Spring Cloud Gateway & Linkerd性能對比》
如上圖所示,客戶端發(fā)送請求到Spring Cloud Gateway,Gateway Handler Mapping確定請求與路由匹配,則會將請求交給Gateway Web Handler處理。
在代理前后可以執(zhí)行多個過濾器。最后代理到具體的服務。
首先還是最基本的步驟,創(chuàng)建一個Maven項目,添加Gateway需要的依賴信息:
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.0.1.RELEASEversion>
parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>Finchley.RELEASEversion>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-gatewayartifactId>
dependency>
dependencies>
編寫啟動類:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 網(wǎng)關啟動入口
*
* @author yinjihuan
*
* @about http://cxytiandi.com/about
*
*/
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
下面來實現(xiàn)一個最簡單的轉發(fā)功能,基于Path的匹配轉發(fā)功能。
在resources下面建一個application.yml的文件, 內(nèi)容如下:
server:
port: 8084
spring:
cloud:
gateway:
routes:
- id: path_route
uri: http://cxytiandi.com
predicates:
- Path=/course
當你訪問http://localhost:8084/course的時候就會轉發(fā)到http://cxytiandi.com/course,效果如下:

關于路由規(guī)則什么的我們后面再做介紹,本章只是先體驗下Spring Cloud Gateway的功能,能夠創(chuàng)建一個新的項目,成功啟動就可以了,一步步來。
如果你的項目中包含了spring-cloud-starter-gateway,但你不想啟動網(wǎng)關的時候可以通過下面的配置禁用掉:
application.properties
spring.cloud.gateway.enabled=false.
application.yml
spring:
cloud:
gateway:
enabled: false
上面講解的是基于配置的方式來實現(xiàn)路由,還有一種方式是通過代碼的方式來進行路由,比如:
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route(r -> r.path("/course").uri("http://cxytiandi.com"))
.build();
}
示列代碼:https://github.com/yinjihuan/spring-cloud/tree/master/fangjia-gateway
原文鏈接:https://mp.weixin.qq.com/s/92JDqjRcv452FfQUJxuRhw
分享名稱:SpringCloudGateway網(wǎng)關嘗鮮
URL分享:http://www.chinadenli.net/article42/iggeec.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計、品牌網(wǎng)站設計、服務器托管、網(wǎng)站策劃、手機網(wǎng)站建設、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)