最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

工作原理

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

配置類分析

jar包中加載的配置類,會注入到IOC容器中。

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

檢查是否有 org.springframework.web.servlet.DispatcherServlet類,也就是是否引入了springweb的依賴。

2、GatewayAutoConfiguration 核心配置類

配置了很多bean,加載了gateway 需要注入的類。

配置了很多謂詞想的的bean

3、GatewayLoadBalancerClientAutoConfiguration 網(wǎng)關需要使用的負載均衡

該過濾器實現(xiàn)了負載均衡的功能,通過責任鏈的設計模式。

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

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

路由模式源碼分析

網(wǎng)關的請求入口在 DispatcherHandler類里面的 handler 方法。

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

執(zhí)行的handler

webHandler去執(zhí)行

執(zhí)行的是 filter 的 handler,gateway 默認有7個filter,分別實現(xiàn)了不同的功能:負載均衡、請求轉發(fā)等功能。各個filter通過責任鏈模式循環(huán)執(zhí)行。

解決前后端的跨域問題

微服務中跨域的問題,不屬于前端解決 jsonp ,只能支持get請求。

核心點就是在我們后端。

解決跨域的問題

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

gateway解決跨域問題:增加過濾器,給請求頭增加參數(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)關源碼解析的詳細內容,更多關于Gateway網(wǎng)關的資料請關注腳本之家其它相關文章!

相關文章

  • 教你輕松制作java視頻播放器

    教你輕松制作java視頻播放器

    這篇文章主要為大家詳細介紹了如何編寫屬于自己的java視頻播放器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • SpringBoot邏輯異常統(tǒng)一處理方法

    SpringBoot邏輯異常統(tǒng)一處理方法

    這篇文章主要介紹了SpringBoot邏輯異常統(tǒng)一處理方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 使用Java制作一個簡單的記事本

    使用Java制作一個簡單的記事本

    本文給大家?guī)淼氖鞘褂肑ava制作一個簡單的記事本的代碼,有相同需要的朋友可以參考下
    2015-02-02
  • Java如何通過屬性名獲取Object對象屬性值

    Java如何通過屬性名獲取Object對象屬性值

    這篇文章主要介紹了Java如何通過屬性名獲取Object對象屬性值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • JavaWeb中Servlet的深入理解

    JavaWeb中Servlet的深入理解

    Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數(shù)據(jù)庫或應用程序之間的中間層
    2021-10-10
  • 基于Java代碼配置MyBatis Generator

    基于Java代碼配置MyBatis Generator

    這篇文章主要介紹了基于Java代碼配置MyBatis Generator,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Java時間處理第三方包Joda?Time使用詳解

    Java時間處理第三方包Joda?Time使用詳解

    這篇文章主要為大家介紹了Java時間處理第三方包Joda?Time使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Kotlin教程之函數(shù)和包的定義和流程控制

    Kotlin教程之函數(shù)和包的定義和流程控制

    這篇文章主要介紹了Kotlin教程之函數(shù)和包的定義和流程控制的相關資料,需要的朋友可以參考下
    2017-05-05
  • SpringBoot集成MyBatis的分頁插件PageHelper實例代碼

    SpringBoot集成MyBatis的分頁插件PageHelper實例代碼

    這篇文章主要介紹了SpringBoot集成MyBatis的分頁插件PageHelper的相關操作,需要的朋友可以參考下
    2017-08-08
  • 淺談多線程_讓程序更高效的運行

    淺談多線程_讓程序更高效的運行

    下面小編就為大家?guī)硪黄獪\談多線程_讓程序更高效的運行。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10

最新評論

淳化县| 区。| 南丹县| 铅山县| 德化县| 阿拉善右旗| 汝州市| 扬州市| 芒康县| 厦门市| 郸城县| 若尔盖县| 淅川县| 江达县| 马边| 武义县| 宿州市| 鄂尔多斯市| 高要市| 安远县| 靖安县| 华亭县| 三原县| 蒲江县| 沂水县| 集安市| 甘肃省| 宁德市| 和硕县| 张掖市| 红桥区| 积石山| 平武县| 阜康市| 绥中县| 礼泉县| 项城市| 凉城县| 赤水市| 栖霞市| 噶尔县|