Spring Cloud Gateway 是 Spring Cloud 的一個全新項目,該項目是基于 Spring 5.0架忌,Spring Boot 2.0 和 Project Reactor 等技術開發(fā)的網(wǎng)關恨樟,它旨在為微服務架構提供一種簡單有效的統(tǒng)一的 API 路由管理方式耻警。
Spring Cloud Gateway 作為 Spring Cloud 生態(tài)系統(tǒng)中的網(wǎng)關,目標是替代 Netflix Zuul师坎,其不僅提供統(tǒng)一的路由方式恕酸,并且基于 Filter 鏈的方式提供了網(wǎng)關基本的功能,例如:安全胯陋,監(jiān)控/指標蕊温,和限流。
相關概念:
Route(路由):這是網(wǎng)關的基本構建塊遏乔。它由一個 ID义矛,一個目標 URI,一組斷言和一組過濾器定義盟萨。如果斷言為真凉翻,則路由匹配。
Predicate(斷言):這是一個 Java 8 的 Predicate捻激。輸入類型是一個 ServerWebExchange制轰。我們可以使用它來匹配來自 HTTP 請求的任何內(nèi)容,例如 headers 或參數(shù)胞谭。
Filter(過濾器):這是org.springframework.cloud.gateway.filter.GatewayFilter的實例垃杖,我們可以使用它修改請求和響應。
工作流程:
客戶端向 Spring Cloud Gateway 發(fā)出請求丈屹。如果 Gateway Handler Mapping 中找到與請求相匹配的路由调俘,將其發(fā)送到 Gateway Web Handler。Handler 再通過指定的過濾器鏈來將請求發(fā)送到我們實際的服務執(zhí)行業(yè)務邏輯旺垒,然后返回彩库。 過濾器之間用虛線分開是因為過濾器可能會在發(fā)送代理請求之前(“pre”)或之后(“post”)執(zhí)行業(yè)務邏輯。
Spring Cloud Gateway 的特征:
基于 Spring Framework 5先蒋,Project Reactor 和 Spring Boot 2.0
動態(tài)路由
Predicates 和 Filters 作用于特定路由
集成 Hystrix 斷路器
集成 Spring Cloud DiscoveryClient
易于編寫的 Predicates 和 Filters
限流
路徑重寫
Spring Cloud Gateway 與 Zuul的區(qū)別:
1骇钦、Zuul 1.x,是一個基于阻塞 I/ O 的 API Gateway
2竞漾、Zuul 1.x 基于Servlet 2. 5司忱,使用阻塞架構皇忿,它不支持任何長連接,如 WebSocket坦仍。 Zuul 的設計模式和Nginx較像鳍烁,每次 I/ O 操作都是從工作線程中選擇一個執(zhí)行,請求線程被阻塞到工作線程完成繁扎,但是差別是Nginx 用C++ 實現(xiàn)幔荒,Zuul 用 Java 實現(xiàn),而 JVM 本身會有第一次加載較慢的情況梳玫,使得Zuul 的性能相對較差阅羹。
3狗热、Zuul 2.x,基于 Netty 非阻塞、支持長連接白对,但 Spring Cloud 目前還沒有整合哑了。 Zuul 2.x的性能較 Zuul 1.x 有較大提升再愈。在性能方面绊茧,根據(jù)官方提供的基準測試, Spring Cloud Gateway 的 RPS(每秒請求數(shù))是Zuul 的 1. 6 倍谦纱。
4看成、Spring Cloud Gateway 建立 在 Spring Framework 5、 Project Reactor 和 Spring Boot 2 之上跨嘉, 使用非阻塞 API川慌。
5、Spring Cloud Gateway 還 支持 WebSocket祠乃, 并且 與 Spring 緊密集成梦重, 擁有更好的開發(fā)體驗。
電子商務社交平臺源碼請加企鵝求求:三五三六二四七二五九