Spring Cloud Gateway 閘道器嚐鮮
Gateway 介紹
Spring Cloud Gateway是Spring官方基於Spring 5.0,Spring Boot 2.0和Project Reactor等技術開發的閘道器,Spring Cloud Gateway旨在為微服務架構提供一種簡單而有效的統一的API路由管理方式。Spring Cloud Gateway作為Spring Cloud生態系中的閘道器,目標是替代Netflix ZUUL,其不僅提供統一的路由方式,並且基於Filter鏈的方式提供了閘道器基本的功能,例如:安全,監控/埋點,和限流等。
可能有同學就要問了,不是已經有Zuul了嗎,為什麼又搞了一個閘道器,這更新的節奏確實很快哈,沒精力還真學習不過來。
之所以新搞了一個閘道器,是因為Zuul基於servlet 2.5 (works with 3.x),使用阻塞API。它不支援任何長期的連線,如websocket。
Gateway建立在Spring Framework 5,Project Reactor和Spring Boot 2上,使用非阻塞API。支援Websockets,因為它與Spring緊密整合,所以它會是一個讓開發者有更好體驗的框架。當然效能的提升是肯定的,不然完全沒必要重新搞一個啊,只不過Zuul2出來的太遲了,自己已經搞了一個,所以不太可能會將Zuul2整合到Spring Cloud中了。
關於效能這塊的比較可以參考我周兄的文章《糾錯帖:Zuul & Spring Cloud Gateway & Linkerd效能對比》
工作原理
如上圖所示,客戶端傳送請求到Spring Cloud Gateway,Gateway Handler Mapping確定請求與路由匹配,則會將請求交給Gateway Web Handler處理。
在代理前後可以執行多個過濾器。最後代理到具體的服務。
專案整合Gateway
首先還是最基本的步驟,建立一個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;
/**
* 閘道器啟動入口
*
* @author yinjihuan
*
* @about
*
*/
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
簡單路由示列
下面來實現一個最簡單的轉發功能,基於Path的匹配轉發功能。
在resources下面建一個application.yml的檔案, 內容如下:
server:
port: 8084
spring:
cloud:
gateway:
routes:
- id: path_route
uri:
predicates:
- Path=/course
當你訪問的時候就會轉發到/course,效果如下:
關於路由規則什麼的我們後面再做介紹,本章只是先體驗下Spring Cloud Gateway的功能,能夠建立一個新的專案,成功啟動就可以了,一步步來。
如果你的專案中包含了spring-cloud-starter-gateway,但你不想啟動閘道器的時候可以透過下面的配置禁用掉:
application.properties
spring.cloud.gateway.enabled=false.
application.yml
spring:
cloud:
gateway:
enabled: false
上面講解的是基於配置的方式來實現路由,還有一種方式是透過程式碼的方式來進行路由,比如:
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route(r -> r.path("/course").uri(""))
.build();
}
示列程式碼:
原文連結:https://mp.weixin.qq.com/s/92JDqjRcv452FfQUJxuRhw
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561268/viewspace-2219964/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 微服務閘道器 Spring Cloud Gateway微服務SpringCloudGateway
- 微服務閘道器實戰——Spring Cloud Gateway微服務SpringCloudGateway
- 微服務閘道器Zuul遷移到Spring Cloud Gateway微服務ZuulSpringCloudGateway
- Spring Cloud Gateway 整合阿里 Sentinel閘道器限流實戰!SpringCloudGateway阿里
- 閘道器 zuul 與 spring-cloud gateway的區別ZuulSpringCloudGateway
- 微服務閘道器Spring Cloud Gateway的應用實戰微服務SpringCloudGateway
- Spring Cloud Zuul 閘道器SpringCloudZuul
- Spring Cloud Alibaba系列(四)使用gateway作為服務閘道器SpringCloudGateway
- 基於Spring-Cloud-Gateway開發API閘道器的思路SpringCloudGatewayAPI
- gateway 閘道器Gateway
- 閘道器GatewayGateway
- 最全面的改造Zuul閘道器為Spring Cloud Gateway(包含Zuul核心實現和Spring Cloud Gateway核心實現)ZuulSpringCloudGateway
- Spring Cloud Zuul 閘道器(一)SpringCloudZuul
- Dubbo想要個閘道器怎麼辦?試試整合Spring Cloud GatewaySpringCloudGateway
- 閘道器 Spring-Cloud-Gateway 原始碼解析 —— 除錯環境搭建SpringCloudGateway原始碼除錯
- 從零搭建Spring Cloud Gateway閘道器(三)——報文結構轉換SpringCloudGateway
- Spring cloud(5)-路由閘道器(Zuul)SpringCloud路由Zuul
- Gateway(閘道器)的概述Gateway
- SpringCloud(四)GateWay閘道器SpringGCCloudGateway
- SpringCloud(五)GateWay閘道器SpringGCCloudGateway
- Spring Cloud 專題之四:Zuul閘道器SpringCloudZuul
- Spring Cloud Zuul與閘道器中介軟體SpringCloudZuul
- springcloud(十五):Spring Cloud 終於按捺不住推出了自己的服務閘道器 GatewaySpringGCCloudGateway
- SpringCloud GateWay 使用 閘道器路由SpringGCCloudGateway路由
- 並行閘道器 Parallel Gateway並行ParallelGateway
- Springcloud教程——GateWay閘道器元件SpringGCCloudGateway元件
- springcloud服務閘道器-gatewaySpringGCCloudGateway
- Spring Cloud Gateway+Nacos,yml+properties兩種配置檔案方式搭建閘道器服務SpringCloudGateway
- 五、SpringCloud alibaba 之 閘道器GateWaySpringGCCloudGateway
- SpringCloud 微服務閘道器 Gateway 元件SpringGCCloud微服務Gateway元件
- Spring Cloud教程 第九彈 微服務閘道器ZuulSpringCloud微服務Zuul
- Spring Cloud實戰系列(五) - 服務閘道器ZuulSpringCloudZuul
- JAVA開發者大會-Spring Cloud閘道器分享JavaSpringCloud
- 微服務(七)Gateway服務閘道器微服務Gateway
- sbc(六) Zuul GateWay 閘道器應用ZuulGateway
- Spring Cloud Gateway 之 過濾器SpringCloudGateway過濾器
- 在spring boot中整合微服務閘道器係統Spring Cloud ZuulSpring Boot微服務CloudZuul
- 面向未來的閘道器: Kubernetes Gateway API 和 Envoy GatewayGatewayAPI