Spring Cloud 微服務之Zuul(八)

2021-10-21 14:00:15 字數 2349 閱讀 2101

測試使用

# 1.訪問:http://localhost:8021/get/1

}# 2.訪問:http://localhost:8888/springcloud-service/get/1

}

過濾功能負責對請求過程進行額外的處理,是請求校驗過濾及服務聚合的基礎。

生命週期

/**

* @author: jihongye

* @date: 2021/03/07/22:18

* @description: 路由**之前列印日誌資訊

*/@component

public

class

prelogfilter

extends

zuulfilter

/** * 過濾器執行順序,數值越小優先順序越高。

*/@override

public

intfilterorder()

/** * 是否進行過濾,返回true會執行過濾。

*/@override

public

boolean

shouldfilter()

/** * 自定義的過濾器邏輯,當shouldfilter()返回true時會執行。

*/@override

public object run()

throws zuulexception ,method:{},uri:{}"

, host, method, uri)

;return null;

}}

# 訪問:http://localhost:8888/userservice/get/1

# 控制台列印

com.macro.cloud.filter.prelogfilter: remote host:,method:get,uri:/userservice/get/1

核心過濾器過濾器名稱

過濾型別

優先順序過濾器的作用

servletdetectionfilter

pre-3

檢測當前請求是通過dispatcherservlet處理執行的還是zuulservlet執行處理的。

pre-2

對原始的httpservletrequest進行包裝。

pre-1

debugfilter

route

1根據zuul.debug.request的配置來決定是否列印debug日誌。

predecorationfilter

route

5對當前請求進行預處理以便執行後續操作。

ribbonroutingfilter

route

10通過ribbon和hystrix來向服務例項發起請求,並將請求結果進行返回。

******hostroutingfilter

route

100只對請求上下文中有routehost引數的進行處理,直接使用httpclient向routehost對應的實體地址進行**。

sendforwardfilter

route

500只對請求上下文中有forward.to引數的進行處理,進行本地跳轉。

senderrorfilter

post

0當其他過濾器內部發生異常時的會由它來進行處理,產生錯誤響應。

sendresponsefilter

post

1000

利用請求上下文的響應資訊來組織請求成功的響應內容。

禁用過濾器

zuul:

filterclassname:

filter:

disable: true

# 禁用prelogfilter的示例配置

zuul:

prelogfilter:

pre:

disable: true

由於zuul自動整合了ribbon和hystrix,所以zuul天生就有負載均衡和服務容錯能力,我們也可以通過ribbon和hystrix的配置來配置zuul中的相應功能。

微服務之springcloud

分布式架構的概念 多個子模組相互協作才能完成業務流程,系統之間需要進行通訊。優點 1 把模組拆分,使用介面通訊,降低模組之間的耦合度。2 把專案拆分成若干個子專案,不同團隊負責不同子專案。3 增加功能時只需要再增加子專案,呼叫其他系統的介面 4 可以靈活進行分布式部署 缺點 1 系統之間互動需要使用...

SpringCloud微服務之 Ribbon

ribbon簡介 需要解決的問題 如何在配置eureka client註冊中心時不去硬編碼eureka server的位址?在微服務不同模組間進行通訊時,如何不去硬編碼服務提供者的位址?當部署多個相同微服務時,如何實現請求時的負載均衡?實現負載均衡方式1 通過伺服器端實現負載均衡 nginx rib...

SpringCloud微服務之OpenFeign

在之前進行微服務的呼叫用的是ribbon resttemplate,就像這樣 這樣呼叫微服務是更偏向面向restfull風格,但偏離了面向介面程式設計 使用openfeign,openfeign底層還是用的ribbon。新增openfeign依賴 org.springframework.cloudg...