zuul是netflix設計用來為所有面向裝置、web**提供服務的所有應用的門面,zuul可以提供動態路由、監控、彈性擴充套件、安全認證等服務,他還可以根據需求將請求路由到多個應用中。
在使用閘道器之前,動態的路由是通過nginx的配置來做的,但是一旦發生改變,比如ip位址發生改變,加入其它路由,就要重新配置nginx,重啟nginx。安全認證是放在每乙個應用中,應用中包含了非業務強相關的內容,看起來也是不夠優雅。
在目前的應用中,zuul主要用來做如下幾件事情:
安全認證:zuul作為網際網路服務架構中的閘道器,可以用來校驗非法訪問、授予token、校驗token等。
限流:zuul通過記錄每種請求的型別來達到限制訪問過多導致服務down掉的目的。
靜態響應處理:直接在zuul就處理一些請求,返回響應內容,不**到微服務內部。
區域彈性:主要是針對aws上的應用做一些彈性擴充套件。
啟動類
zuul的路由配置:
簡潔配置zuul
:routes
:product
:path
: /myproduct/**
serviceid
: product
#排除某些路由
ignored-patterns
:- /**/product/listfororder
訪問路由zuul
:routes
:product
: /myproduct/**
#排除某些路由
ignored-patterns
:- /**/product/listfororder

可以從路由中獲取響應資訊,成功
排除路由設定
如下進行排除配置:
ignored-patterns:
- /**/product/listfororder
這裡用postman對其進行排除路由的測試:
結果訪問排除的路由介面為404,成功。
傳遞cookie
因為zuul的敏感頭sensitiveheaders 會過濾掉敏感頭 包括cookie,那麼只需要對其設定為空
前置過濾器(pre)的使用場景有:
限流鑑權
引數校驗調整
後置過濾器(post)統計
日誌
pre:
對請求中,帶有token的請求才能訪問;否則丟擲401許可權不夠
帶有token的請求可以正常得到響應@component
public
class
tokenfilter
extends
zuulfilter
@override
public
intfilterorder()
@override
public
boolean
shouldfilter()
@override
public object run()
return null;
}}
不帶token的請求會丟擲401異常
對響應結果進行處理,設定乙個響應頭名為x-foo,帶有uuid
結果@component
public
class
addresponseheaderfilter
extends
zuulfilter
@override
public
intfilterorder()
@override
public
boolean
shouldfilter()
@override
public object run()
}
令牌桶限流
SpringCloud之zuul微服務閘道器
圖例 zuul的核心是一系列的過濾器,這些過濾器可以完成以下功能 1 身份認證與安全 識別每個資源的驗證要求,並拒絕那些與要求不符的請求。2 審查與監控 在邊緣位置追蹤有意義的資料和統計結果,從而帶來精確的生產檢視。3 動態路由 動態地將請求路由到不同的後端集群。4 壓力測試 逐漸增加指向集群的流量...
SpringCloud 服務閘道器
上篇部落格 springcloud eureka服務註冊和發現 中介紹了註冊中心eureka 服務提供者和服務消費者。這篇部落格我們將介紹服務閘道器。圖 1 未使用服務閘道器的做法 圖 2 服務閘道器的做法 服務閘道器,英文service gateway,他是微服務框架中唯一的入口。有些類似外觀模式...
SpringCloud 服務閘道器
上篇部落格 springcloud eureka服務註冊和發現 中介紹了註冊中心eureka 服務提供者和服務消費者。這篇部落格我們將介紹服務閘道器。圖 1 未使用服務閘道器的做法 圖 2 服務閘道器的做法 服務閘道器,英文service gateway,他是微服務框架中唯一的入口。有些類似外觀模式...