亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Gateway網(wǎng)關(guān)源碼解析

 更新時(shí)間:2022年07月29日 10:16:12   作者:kaico2018  
這篇文章主要介紹了Gateway微服務(wù)網(wǎng)關(guān),負(fù)載均衡,熔斷和限流,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

工作原理

客戶(hù)端向 Spring Cloud Gateway 發(fā)出請(qǐng)求。 如果網(wǎng)關(guān)處理程序映射確定請(qǐng)求與路由匹配,則將其發(fā)送到網(wǎng)關(guān) Web 處理程序。 此處理程序通過(guò)特定于請(qǐng)求的過(guò)濾器鏈運(yùn)行請(qǐng)求。 過(guò)濾器用虛線劃分的原因是過(guò)濾器可以在發(fā)送代理請(qǐng)求之前和之后運(yùn)行邏輯。 執(zhí)行所有“預(yù)”過(guò)濾器邏輯。 然后發(fā)出代理請(qǐng)求。 發(fā)出代理請(qǐng)求后,將運(yùn)行“發(fā)布”過(guò)濾器邏輯。

配置類(lèi)分析

jar包中加載的配置類(lèi),會(huì)注入到IOC容器中。

1、GatewayClassPathWarningAutoConfiguration 檢查是否有正確的配置webflux

檢查是否有 org.springframework.web.servlet.DispatcherServlet類(lèi),也就是是否引入了springweb的依賴(lài)。

2、GatewayAutoConfiguration 核心配置類(lèi)

配置了很多bean,加載了gateway 需要注入的類(lèi)。

配置了很多謂詞想的的bean

3、GatewayLoadBalancerClientAutoConfiguration 網(wǎng)關(guān)需要使用的負(fù)載均衡

該過(guò)濾器實(shí)現(xiàn)了負(fù)載均衡的功能,通過(guò)責(zé)任鏈的設(shè)計(jì)模式。

4、GatewayRedisAutoConfiguration 網(wǎng)關(guān)整合Redis整合Lua實(shí)現(xiàn)限流

5、GatewayDiscoveryClientAutoConfiguration 把網(wǎng)關(guān)服務(wù)注冊(cè)到注冊(cè)中心中去,服務(wù)注冊(cè)與發(fā)現(xiàn)功能

路由模式源碼分析

網(wǎng)關(guān)的請(qǐng)求入口在 DispatcherHandler類(lèi)里面的 handler 方法。

查找handler方法中,子類(lèi)會(huì)查找路由策略,循環(huán)查找路由策略,第一個(gè)匹配的策略會(huì)返回了。

執(zhí)行的handler

webHandler去執(zhí)行

執(zhí)行的是 filter 的 handler,gateway 默認(rèn)有7個(gè)filter,分別實(shí)現(xiàn)了不同的功能:負(fù)載均衡、請(qǐng)求轉(zhuǎn)發(fā)等功能。各個(gè)filter通過(guò)責(zé)任鏈模式循環(huán)執(zhí)行。

解決前后端的跨域問(wèn)題

微服務(wù)中跨域的問(wèn)題,不屬于前端解決 jsonp ,只能支持get請(qǐng)求。

核心點(diǎn)就是在我們后端。

解決跨域的問(wèn)題

  1. HttpClient轉(zhuǎn)發(fā)
  2. 使用過(guò)濾器允許接口可以跨域 響應(yīng)頭設(shè)置
  3. Jsonp 不支持我們的post 屬于前端解決
  4. Nginx解決跨域的問(wèn)題保持我們域名和端口一致性
  5. Nginx也是通過(guò)配置文件解決跨域的問(wèn)題
  6. 基于微服務(wù)網(wǎng)關(guān)解決跨域問(wèn)題,需要保持域名和端口一致性
  7. 使用網(wǎng)關(guān)代碼允許所有的服務(wù)可以跨域的問(wèn)題
  8. 使用SpringBoot注解形式@CrossOrigin

gateway解決跨域問(wèn)題:增加過(guò)濾器,給請(qǐng)求頭增加參數(shù)。

@Component
public class CrossOriginFilter implements GlobalFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        ServerHttpRequest request = exchange.getRequest();
        ServerHttpResponse response = exchange.getResponse();
        HttpHeaders headers = response.getHeaders();
        headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*");
        headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "POST, GET, PUT, OPTIONS, DELETE, PATCH");
        headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
        headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, "*");
        headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");
        return chain.filter(exchange);
    }
}

以上就是Gateway網(wǎng)關(guān)源碼解析的詳細(xì)內(nèi)容,更多關(guān)于Gateway網(wǎng)關(guān)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java實(shí)現(xiàn)窗體程序顯示日歷

    Java實(shí)現(xiàn)窗體程序顯示日歷

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)窗體程序顯示日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java 生成帶Logo和文字的二維碼

    Java 生成帶Logo和文字的二維碼

    這篇文章主要介紹了Java 生成帶Logo和文字的二維碼的方法,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04
  • Java延時(shí)的3種實(shí)現(xiàn)方法舉例

    Java延時(shí)的3種實(shí)現(xiàn)方法舉例

    這篇文章主要給大家介紹了關(guān)于Java延時(shí)的3種實(shí)現(xiàn)方法舉例,java開(kāi)發(fā)中常會(huì)用到延時(shí)任務(wù),文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • java使用gzip實(shí)現(xiàn)文件解壓縮示例

    java使用gzip實(shí)現(xiàn)文件解壓縮示例

    這篇文章主要介紹了java使用gzip實(shí)現(xiàn)文件解壓縮示例,需要的朋友可以參考下
    2014-03-03
  • java基礎(chǔ)之 “==”與“equals”區(qū)別詳解

    java基礎(chǔ)之 “==”與“equals”區(qū)別詳解

    這篇文章主要介紹了java基礎(chǔ)之 “==”與“equals”區(qū)別詳解,需要的朋友可以參考下
    2020-02-02
  • JAVA實(shí)現(xiàn)感知器算法

    JAVA實(shí)現(xiàn)感知器算法

    這篇文章主要為大家詳細(xì)介紹了JAVA實(shí)現(xiàn)感知器算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Springboot整合JwtHelper實(shí)現(xiàn)非對(duì)稱(chēng)加密

    Springboot整合JwtHelper實(shí)現(xiàn)非對(duì)稱(chēng)加密

    本文主要介紹了Springboot整合JwtHelper實(shí)現(xiàn)非對(duì)稱(chēng)加密,主要介紹兩種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Java實(shí)現(xiàn)雪花算法的原理和實(shí)戰(zhàn)教程

    Java實(shí)現(xiàn)雪花算法的原理和實(shí)戰(zhàn)教程

    這篇文章主要介紹了Java實(shí)現(xiàn)雪花算法的原理和實(shí)戰(zhàn)教程,本文通過(guò)語(yǔ)言表述和代碼的實(shí)現(xiàn)講解了該項(xiàng)算法,,需要的朋友可以參考下
    2021-06-06
  • Java獲取XML節(jié)點(diǎn)總結(jié)之讀取XML文檔節(jié)點(diǎn)的方法

    Java獲取XML節(jié)點(diǎn)總結(jié)之讀取XML文檔節(jié)點(diǎn)的方法

    下面小編就為大家?guī)?lái)一篇Java獲取XML節(jié)點(diǎn)總結(jié)之讀取XML文檔節(jié)點(diǎn)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • Java經(jīng)典面試題匯總--多線程

    Java經(jīng)典面試題匯總--多線程

    本篇總結(jié)的是Java多線程相關(guān)的面試題,后續(xù)會(huì)持續(xù)更新,希望我的分享可以幫助到正在備戰(zhàn)面試的實(shí)習(xí)生或者已經(jīng)工作的同行,如果發(fā)現(xiàn)錯(cuò)誤還望大家多多包涵,不吝賜教,謝謝
    2021-06-06

最新評(píng)論