一怨愤、Gateway
? ? 是什么:SpringCloud Gateway 是SpringCloud 的一個全新項目寞缝,基于Spring 5.0 +Spring Boot 2.0 和 Project Reactor 等技術(shù)開發(fā)的網(wǎng)關(guān)癌压,它旨在為微服務(wù)架構(gòu)提供一種簡單有效的統(tǒng)一的API路由管理方式。
? ? 優(yōu)勢:在 SpringCloud 2.0以上版本中荆陆,沒有對新版本的zuul 2.0 以上最新高性能版本進(jìn)行集成措拇,仍然還是使用的zuul 1.x 非Reactor模式的老版本。而為了提升網(wǎng)關(guān)的性能慎宾,SpringCloud Gateway 是基于 WebFlux框架實現(xiàn)的丐吓,而WebFlux框架底層則使用了高性能的Reactor模式通信框架Netty。
? ? 作用:SpringCloud Gateway的目標(biāo)是提供統(tǒng)一的路由方式且基于Filter鏈的方式提供了網(wǎng)關(guān)基本的功能趟据,例如:安全券犁,監(jiān)控/指標(biāo),和限流汹碱。
? ? SpringCloud Gateway 的特性
1. 基于Spring Framework 5粘衬,Project Reactor和SpringBoot 2.0 進(jìn)行溝通;
2. 動態(tài)路由:能夠匹配任何請求屬性;
3. 可以對路由制定Predicate(斷言)和Filter(過濾器)稚新;
4. 集成Hystrix的斷路器功能勘伺;
5. 集成SpringCloud服務(wù)發(fā)現(xiàn)功能;
6. 易于編寫的Predicate(斷言)和Filter(過濾器)褂删;
7. 請求限流功能飞醉;
8. 支持路徑重寫;
? ? 三大概念:
Route(路由):路由是構(gòu)建網(wǎng)關(guān)的基本模塊屯阀,它由ID缅帘,目標(biāo)URI,一系列的斷言和過濾器組成难衰,如果斷言為true則匹配該路由钦无;
Predicate(斷言):開發(fā)人員可以匹配HTTP請求中的所有內(nèi)容(例如請求頭或者請求參數(shù)),如果請求與斷言相匹配則進(jìn)行路由盖袭;
Filter(過濾器):指的是Spring框架中GatewayFilter的實例失暂,使用過濾器,可以在請求被路由前或者之后對請求進(jìn)行修改鳄虱。
? ? Gateway工作流程:
? ? ? ? ① 客戶端向 SpringCloud Gateway 發(fā)送請求弟塞。然后再Gateway Handler Mapping 中找到與請求相匹配的路由,將其發(fā)送到Gateway WebHandler醇蝴。
? ? ? ? ② Handler 再通過制定的過濾器鏈來將請求發(fā)送到我們實際的服務(wù)執(zhí)行業(yè)務(wù)邏輯宣肚,然后返回。(過濾器之間用虛線分開是因為過濾器可能會在發(fā)送代理請求之前(“pre”)或之后(“post”)執(zhí)行業(yè)務(wù)邏輯)
? ? ? ? ③ Filter 在“pre”類型的過濾器可以做參數(shù)校驗悠栓、權(quán)限校驗霉涨、流量監(jiān)控、日志輸出惭适、協(xié)議轉(zhuǎn)換等笙瑟,在“post”類型得過濾器中可以做響應(yīng)內(nèi)容、響應(yīng)頭的修改癞志,日志的輸出往枷,流量監(jiān)控等重要操作。
? ? Route Predicate Factories是什么凄杯?
? ? ? ? SpringCloud Gateway 將路由匹配作為Spring WebFlux HandlerMapping基礎(chǔ)架構(gòu)的一部分错洁。它包括了許多內(nèi)置的Route Predicate工廠。所有這些Predicate都與HTTP請求的不同屬性匹配戒突。多個Route Predicate工廠可以進(jìn)行組合屯碴。
? ? ? ???SpringCloud Gateway 創(chuàng)建Route 對象時,使用RoutePredicateFactory創(chuàng)建Predicate對象膊存,Predicate對象可以賦值給Route导而。?SpringCloud Gateway 包含許多內(nèi)置的Route Predicate Factories忱叭。
? ? GatewayFilter Factories是什么?
? ? ? ? 路由過濾器可用于修改進(jìn)入的HTTP請求和返回的HTTP響應(yīng)今艺,路由過濾器只能指定路由進(jìn)行使用韵丑。SpringCloud Gateway 內(nèi)置了多種路由過濾器,他們都由GatewayFilter的工廠類來產(chǎn)生虚缎。
? ? ? ? 作用:全局日志/統(tǒng)一網(wǎng)關(guān)鑒權(quán)...