SpringCloud 三 服務閘道器Zuul

2021-10-03 05:29:12 字數 3087 閱讀 3466

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許可權不夠

@component

public

class

tokenfilter

extends

zuulfilter

@override

public

intfilterorder()

@override

public

boolean

shouldfilter()

@override

public object run()

return null;

}}

帶有token的請求可以正常得到響應

不帶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,他是微服務框架中唯一的入口。有些類似外觀模式...