一、過(guò)濾器的場(chǎng)景
在springCloud架構(gòu)中,網(wǎng)關(guān)是必不可少的組件,它用于服務(wù)路由的轉(zhuǎn)發(fā)。對(duì)客戶(hù)端進(jìn)行屏蔽微服務(wù)的具體細(xì)節(jié),客戶(hù)端只需要和網(wǎng)關(guān)進(jìn)行交互。所以網(wǎng)關(guān)顧名思義,就是網(wǎng)絡(luò)的一個(gè)關(guān)卡。它就是一座城的城門(mén)守衛(wèi)。所以這個(gè)守衛(wèi)就可以做很多工作,比如對(duì)來(lái)訪者身份的認(rèn)證,盤(pán)查等。最后才是放行。所以在微服務(wù)開(kāi)發(fā)中,我們可以在這一層做過(guò)濾器,這是非常好的場(chǎng)景。
二、 GatewayFilter與GlobalFilter
Spring Cloud Gateway 根據(jù)作用范圍劃分為 GatewayFilter 和 GlobalFilter,二者區(qū)別如下:
- GatewayFilter : 需要通過(guò)spring.cloud.routes.filters 配置在具體路由下,只作用在當(dāng)前路由上或通過(guò)spring.cloud.default-filters配置在全局,作用在所有路由上。
- GlobalFilter : 不需要在配置文件中配置,作用在所有的路由上,最終通過(guò)GatewayFilterAdapter包裝成GatewayFilterChain可識(shí)別的過(guò)濾器,它為請(qǐng)求業(yè)務(wù)以及路由的URI轉(zhuǎn)換為真實(shí)業(yè)務(wù)服務(wù)的請(qǐng)求地址的核心過(guò)濾器,不需要配置,系統(tǒng)初始化時(shí)加載,并作用在每個(gè)路由上。
GlobalFilter應(yīng)用
@Component
public class TestGlobalFilter implements GlobalFilter, Ordered {
@Override
public int getOrder() {
return 0;
}
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
//獲取url
String path = request.getURI().getPath();
//獲取請(qǐng)求頭中信息
String source = request.getHeaders().getFirst("source");
//做一些動(dòng)作和業(yè)務(wù)
return chain.filter(exchange);
}
}
Spring Gateway是一個(gè)基于Spring Boot的API網(wǎng)關(guān),用于構(gòu)建微服務(wù)架構(gòu)的應(yīng)用程序。它提供了一種簡(jiǎn)單而靈活的方式來(lái)路由和管理API請(qǐng)求,并提供了一些額外的功能,如安全、監(jiān)控和動(dòng)態(tài)路由。以下是關(guān)于Spring Gateway的詳細(xì)解釋?zhuān)?/p>
一、概述
Spring Gateway是Spring Cloud生態(tài)系統(tǒng)中的一部分,旨在提供一個(gè)易于使用和集成的API網(wǎng)關(guān)解決方案。它基于Spring Boot框架構(gòu)建,使用Java編寫(xiě),因此可以與現(xiàn)有的Spring應(yīng)用程序無(wú)縫集成。通過(guò)使用Spring Gateway,開(kāi)發(fā)人員可以輕松地構(gòu)建具有高度可擴(kuò)展性和可維護(hù)性的微服務(wù)應(yīng)用程序。
二、核心功能文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-631338.html
- 路由管理:Spring Gateway的核心功能是路由管理,它允許開(kāi)發(fā)人員定義一系列的路由規(guī)則,根據(jù)不同的條件將API請(qǐng)求路由到不同的微服務(wù)。開(kāi)發(fā)人員可以使用簡(jiǎn)單的條件表達(dá)式或斷言來(lái)定義路由規(guī)則,例如基于URL路徑、請(qǐng)求頭、參數(shù)等進(jìn)行匹配。
- 動(dòng)態(tài)路由:Spring Gateway支持動(dòng)態(tài)路由,這意味著開(kāi)發(fā)人員可以根據(jù)運(yùn)行時(shí)的條件動(dòng)態(tài)地更改路由規(guī)則。例如,根據(jù)用戶(hù)的身份驗(yàn)證狀態(tài)或請(qǐng)求的上下文信息來(lái)動(dòng)態(tài)決定請(qǐng)求的路由。
- 過(guò)濾器鏈:Spring Gateway允許開(kāi)發(fā)人員定義一系列的過(guò)濾器鏈,用于在請(qǐng)求到達(dá)目標(biāo)微服務(wù)之前進(jìn)行預(yù)處理和后處理。過(guò)濾器鏈可以用于實(shí)現(xiàn)各種功能,如身份驗(yàn)證、授權(quán)、限流、日志記錄等。
- 集成斷言:Spring Gateway集成了許多斷言,這些斷言可用于定義路由規(guī)則和過(guò)濾器鏈的條件。常見(jiàn)的斷言包括Path、Header、Cookie、Query等。
- 響應(yīng)處理:Spring Gateway支持對(duì)API請(qǐng)求的響應(yīng)進(jìn)行自定義處理。開(kāi)發(fā)人員可以使用ResponseSpec對(duì)象來(lái)自定義響應(yīng)的狀態(tài)碼、頭部信息和正文內(nèi)容。
- 健康檢查和監(jiān)控:Spring Gateway提供了開(kāi)箱即用的健康檢查和監(jiān)控功能,可以輕松地與現(xiàn)有的監(jiān)控系統(tǒng)集成。通過(guò)暴露特定的端點(diǎn),開(kāi)發(fā)人員可以獲取網(wǎng)關(guān)的健康狀態(tài)和性能指標(biāo)。
- 動(dòng)態(tài)配置:Spring Gateway支持動(dòng)態(tài)配置,這意味著開(kāi)發(fā)人員可以在運(yùn)行時(shí)更改路由規(guī)則和過(guò)濾器鏈的定義,而無(wú)需重啟應(yīng)用程序。這為開(kāi)發(fā)人員提供了更大的靈活性,并加快了開(kāi)發(fā)周期。
三、使用場(chǎng)景文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-631338.html
- API網(wǎng)關(guān):Spring Gateway可以作為API網(wǎng)關(guān)使用,將多個(gè)微服務(wù)暴露為一個(gè)統(tǒng)一的入口點(diǎn)。通過(guò)路由管理,開(kāi)發(fā)人員可以定義規(guī)則將請(qǐng)求路由到正確的微服務(wù),并處理跨多個(gè)服務(wù)的調(diào)用。
- 流量管理:Spring Gateway可以幫助開(kāi)發(fā)人員進(jìn)行流量管理,例如實(shí)現(xiàn)限流、熔斷、超時(shí)控制等功能。通過(guò)在過(guò)濾器鏈中實(shí)現(xiàn)相應(yīng)的邏輯,開(kāi)發(fā)人員可以有效地控制流量和防止?jié)撛诘男阅軉?wèn)題。
- 身份驗(yàn)證和授權(quán):在微服務(wù)架構(gòu)中,身份驗(yàn)證和授權(quán)是一個(gè)重要的考慮因素。Spring Gateway可以與安全框架(如Spring Security)集成,對(duì)API請(qǐng)求進(jìn)行身份驗(yàn)證和授權(quán)控制,確保只有合法的用戶(hù)才能訪問(wèn)特定的微服務(wù)。
- 集成第三方服務(wù):Spring Gateway可以輕松地與第三方服務(wù)集成,例如消息隊(duì)列、緩存系統(tǒng)等。通過(guò)集成這些服務(wù),開(kāi)發(fā)人員可以構(gòu)建更加強(qiáng)大和靈活的微服務(wù)應(yīng)用程序。
- 監(jiān)控和日志記錄:通過(guò)與監(jiān)控系統(tǒng)集成,Spring Gateway可以幫助開(kāi)發(fā)人員進(jìn)行性能分析和故障排查。它提供了內(nèi)置的監(jiān)控端點(diǎn),可以輕松地收集和報(bào)告關(guān)鍵指標(biāo),并與日志框架(如Logback或Log4j)集成以記錄詳細(xì)的日志信息。
到了這里,關(guān)于Spring Cloud Gateway過(guò)濾器GlobalFilter詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!