測試使用
# 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...