国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

聊聊Spring Cloud Gateway

這篇具有很好參考價(jià)值的文章主要介紹了聊聊Spring Cloud Gateway。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

網(wǎng)關(guān)概述

整體來(lái)看,網(wǎng)關(guān)有點(diǎn)類似于門面,所有的外部請(qǐng)求都會(huì)先經(jīng)過(guò)網(wǎng)關(guān)這一層。

網(wǎng)關(guān)不僅只是做一個(gè)請(qǐng)求的轉(zhuǎn)發(fā)及服務(wù)的整合,有了網(wǎng)關(guān)這個(gè)統(tǒng)一的入口之后,它還能提供以下功能。

  • 針對(duì)所有請(qǐng)求進(jìn)行統(tǒng)一鑒權(quán)、限流、熔斷、日志。
  • 協(xié)議轉(zhuǎn)化。針對(duì)后端多種不同的協(xié)議,在網(wǎng)關(guān)層統(tǒng)一處理后以HTTP對(duì)外提供服務(wù)。譬如針對(duì)Dubbo服務(wù)還需要提供一個(gè)Web應(yīng)用來(lái)進(jìn)行協(xié)議轉(zhuǎn)化,此時(shí)可以在API網(wǎng)關(guān)層轉(zhuǎn)換協(xié)議。
  • 統(tǒng)一錯(cuò)誤碼處理。
  • 灰度發(fā)布
  • 請(qǐng)求轉(zhuǎn)發(fā),并且可以基于網(wǎng)關(guān)實(shí)現(xiàn)內(nèi)、外網(wǎng)隔離。

常用的解決方案場(chǎng)景如下:

聊聊Spring Cloud Gateway

聊聊Spring Cloud Gateway

聊聊Spring Cloud Gateway

Spring Cloud Gateway

Spring Cloud Gateway是基于Spring Boot 2.0、Spring WebFlux和Project Reactor等技術(shù)開發(fā)的網(wǎng)關(guān),它不僅提供了統(tǒng)一的路由請(qǐng)求的方式,還基于過(guò)濾鏈的方式提供了網(wǎng)關(guān)最基本的功能;解決了Spring Cloud Zuul的性能問(wèn)題:

  • Zuul 1.x采用的是傳統(tǒng)的thread per connection方式來(lái)處理請(qǐng)求,也就是針對(duì)每一個(gè)請(qǐng)求,會(huì)為這個(gè)請(qǐng)求專門分配一個(gè)線程來(lái)進(jìn)行處理,直到這個(gè)請(qǐng)求完成之后才會(huì)釋放線程,一旦后臺(tái)服務(wù)器響應(yīng)較慢,就會(huì)使得該線程被阻塞,所以它的性能不是很好。

Spring WebFlux基于Project Reactor響應(yīng)式框架實(shí)現(xiàn)了完全無(wú)阻塞的、響應(yīng)式的、高并發(fā)性能的、網(wǎng)絡(luò)請(qǐng)求響應(yīng);解決了如上的Zuul性能問(wèn)題。

個(gè)人覺得,其實(shí)就是類似Nginx、Redis等基于Reactor模式的實(shí)現(xiàn);也是非阻塞IO(Epoll)的另一種體現(xiàn)。

請(qǐng)求過(guò)程及關(guān)鍵概念

Spring Cloud Gateway的請(qǐng)求處理過(guò)程如圖所示,其中有幾個(gè)非常重要的概念。

  • 路由(Route):它是網(wǎng)關(guān)的基本組件,由ID、目標(biāo)URI、Predicate集合、Filter集合組成。

  • 謂語(yǔ)(Predicate):它是Java 8中引入的函數(shù)式接口,提供了斷言的功能。它可以匹配HTTP請(qǐng)求中的任何內(nèi)容。如果Predicate的聚合判斷結(jié)果為true,則意味著該請(qǐng)求會(huì)被當(dāng)前Router進(jìn)行轉(zhuǎn)發(fā)。

聊聊Spring Cloud Gateway

Spring Cloud Gateway啟動(dòng)時(shí)基于Netty Server監(jiān)聽一個(gè)指定的端口(該端口可以通過(guò)server.port屬性自定義)。當(dāng)客戶端發(fā)送一個(gè)請(qǐng)求到網(wǎng)關(guān)時(shí),網(wǎng)關(guān)會(huì)根據(jù)一系列Predicate的匹配結(jié)果來(lái)決定訪問(wèn)哪個(gè)Route路由,然后根據(jù)過(guò)濾器鏈進(jìn)行請(qǐng)求的處理。過(guò)濾器鏈可以在請(qǐng)求發(fā)送到后端服務(wù)器之前和之后執(zhí)行,也就是首先執(zhí)行Pre過(guò)濾器鏈,然后將請(qǐng)求轉(zhuǎn)發(fā)到后端的微服務(wù)執(zhí)行具體的業(yè)務(wù),最后執(zhí)行Post過(guò)濾器鏈。

Route Predicate Factories

Predicate是Java 8提供的一個(gè)函數(shù)式接口,它允許接收一個(gè)參數(shù)并返回一個(gè)布爾值,可以用于條件過(guò)濾、請(qǐng)求參數(shù)的校驗(yàn)。

聊聊Spring Cloud Gateway

在Spring Cloud Gateway中,Predicate提供了路由規(guī)則的匹配機(jī)制。比如:

聊聊Spring Cloud Gateway

意思是通過(guò)Path屬性來(lái)匹配URL前綴是/gateway/的請(qǐng)求。

如下,Spring Cloud Gateway默認(rèn)提供了很多Route Predicate Factory,這些Predicate會(huì)分別匹配HTTP請(qǐng)求的不同屬性,并且多個(gè)Predicate可以通過(guò)and邏輯進(jìn)行組合。

聊聊Spring Cloud Gateway

Gateway Filter Factories

Filter分為Pre類型的過(guò)濾器和Post類型的過(guò)濾器。

  • Pre類型的過(guò)濾器在請(qǐng)求轉(zhuǎn)發(fā)到后端微服務(wù)之前執(zhí)行,在Pre類型過(guò)濾器鏈中可以做鑒權(quán)、限流等操作。

  • Post類型的過(guò)濾器在請(qǐng)求執(zhí)行完之后、將結(jié)果返回給客戶端之前執(zhí)行。

在Spring Cloud Gateway中內(nèi)置了很多Filter,F(xiàn)ilter有兩種實(shí)現(xiàn),分別是GatewayFilter和GlobalFilter。GlobalFilter會(huì)應(yīng)用到所有的路由上,而GatewayFilter只會(huì)應(yīng)用到單個(gè)路由或者一個(gè)分組的路由上。

GatewayFilter

Spring提供了一些內(nèi)置的GatewayFilter,如:

  • AddRequestParameter GatewayFilter Factory:該過(guò)濾器的功能是對(duì)所有匹配的請(qǐng)求添加一個(gè)查詢參數(shù)。
    聊聊Spring Cloud Gateway

  • AddResponseHeader GatewayFilter Factory:該過(guò)濾器會(huì)對(duì)所有匹配的請(qǐng)求,在返回結(jié)果給客戶端之前,在Header中添加相應(yīng)的數(shù)據(jù)。
    在上面這段配置中,會(huì)在Response中添加Header頭,
    聊聊Spring Cloud Gateway
    在上面這段配置中,會(huì)在Response中添加Header頭,key=X-Response-Foo,Value=Bar。

  • RequestRateLimiter GatewayFilter Factory:該過(guò)濾器會(huì)對(duì)訪問(wèn)到當(dāng)前網(wǎng)關(guān)的所有請(qǐng)求執(zhí)行限流過(guò)濾,如果被限流,默認(rèn)情況下會(huì)響應(yīng)HTTP 429-Too Many Requests。
    RequestRateLimiterGatewayFilterFactory默認(rèn)提供了RedisRateLimiter的限流實(shí)現(xiàn),它采用令牌桶算法來(lái)實(shí)現(xiàn)限流功能。
    聊聊Spring Cloud Gateway
    redis-rate-limiter過(guò)濾器有兩個(gè)配置屬性:
    聊聊Spring Cloud Gateway

  • Retry GatewayFilter Factory:Retry GatewayFilter Factory為請(qǐng)求重試過(guò)濾器,當(dāng)后端服務(wù)不可用時(shí),網(wǎng)關(guān)會(huì)根據(jù)配置參數(shù)來(lái)發(fā)起重試請(qǐng)求。
    聊聊Spring Cloud Gateway
    RetryGatewayFilter提供4個(gè)參數(shù)來(lái)控制重試請(qǐng)求,參數(shù)說(shuō)明如下。
    聊聊Spring Cloud Gateway

GlobalFilter

GlobalFilter和GatewayFilter的作用是相同的,只是GlobalFilter針對(duì)所有的路由配置生效。Spring Cloud Gateway內(nèi)置的全局過(guò)濾器也有很多,比如:

聊聊Spring Cloud Gateway

全局過(guò)濾鏈的執(zhí)行順序是,當(dāng)Gateway接收到請(qǐng)求時(shí),F(xiàn)iltering Web Handler處理器會(huì)將所有的GlobalFilter實(shí)例及所有路由上所配置的GatewayFilter實(shí)例添加到一條過(guò)濾器鏈中。該過(guò)濾器鏈里的所有過(guò)濾器都會(huì)按照@Order注解所指定的數(shù)字大小進(jìn)行排序。

  • LoadBalancerClientFilter:LoadBalancerClientFilter是用于實(shí)現(xiàn)請(qǐng)求負(fù)載均衡的全局過(guò)濾器,配置如下。
    聊聊Spring Cloud Gateway
    如果URI配置的是lb://example_service,那么這個(gè)過(guò)濾器會(huì)識(shí)別到lb://,并且使用Spring Cloud LoadBalancerClient將example_service名稱解析成實(shí)際訪問(wèn)的主機(jī)和端口地址。

  • GatewayMetricsFilter:GatewayMetricsFilter是網(wǎng)關(guān)指標(biāo)過(guò)濾器,這個(gè)過(guò)濾器會(huì)添加name=gateway.requests的timer metrics,其中包含以下數(shù)據(jù)。
    聊聊Spring Cloud Gateway
    這些指標(biāo)通過(guò)http://ip:port/actuator/metrics/gateway.requests獲得,前提是需要添加Spring Boot Actuator依賴。

自定義過(guò)濾器

Spring Cloud Gateway提供了過(guò)濾器的擴(kuò)展功能,開發(fā)者可以根據(jù)實(shí)際業(yè)務(wù)需求來(lái)自定義過(guò)濾器。同樣,自定義過(guò)濾器也支持GlobalFilter和GatewayFilter兩種。

  • 自定義GatewayFilter:自定義過(guò)濾器類GpDefineGatewayFilterFactory,繼承AbstractGatewayFilterFactory。

  • 自定義GlobalFilter:GlobalFilter的實(shí)現(xiàn)比較簡(jiǎn)單,它不需要額外的配置,只需要實(shí)現(xiàn)GlobalFilter接口,自動(dòng)會(huì)過(guò)濾所有的Route。

集成

Spring Cloud Gateway支持與其他解決方案集成,實(shí)現(xiàn)更強(qiáng)大的功能,比如Spring Cloud Alibaba系列。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-469902.html

到了這里,關(guān)于聊聊Spring Cloud Gateway的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Cloud Gateway 監(jiān)控、多網(wǎng)關(guān)實(shí)例路由共享 | Spring Cloud 18

    Actuator 是 Spring Boot 提供的用來(lái)對(duì)應(yīng)用系統(tǒng)進(jìn)行監(jiān)控的功能模塊,借助于 Actuator 開發(fā)者可以很方便地對(duì)應(yīng)用系統(tǒng)某些監(jiān)控指標(biāo)進(jìn)行查看、統(tǒng)計(jì)等。 Actuator 的核心是端點(diǎn) Endpoint 。 Endpoint 可以讓我們監(jiān)視應(yīng)用程序并與其交互。 Spring Boot 包含許多內(nèi)置端點(diǎn),并允許您添加自己的端

    2024年02月09日
    瀏覽(27)
  • Spring Cloud之API網(wǎng)關(guān)(Gateway)

    Spring Cloud之API網(wǎng)關(guān)(Gateway)

    目錄 API網(wǎng)關(guān) 好處 解決方案 Gateway 簡(jiǎn)介 特征 核心概念 Route(路由) Predicate(斷言) Filter(過(guò)濾器) 工作流程 Route(路由) 路由配置方式 1.yml配置文件路由 2.bean進(jìn)行配置 3.動(dòng)態(tài)路由 動(dòng)態(tài)路由 Predicate(斷言) 特點(diǎn) 常見斷言 示例 Filter(過(guò)濾器) filter分類 Pre 類型 Post 類型 網(wǎng)關(guān)過(guò)濾器 格式

    2024年02月08日
    瀏覽(31)
  • Spring Cloud第二季--服務(wù)網(wǎng)關(guān)Gateway

    Spring Cloud第二季--服務(wù)網(wǎng)關(guān)Gateway

    Spring Cloud Gateway是在Spring生態(tài)系統(tǒng)之上構(gòu)建的API網(wǎng)關(guān)服務(wù),基于Spring 5,Spring Boot 2和 Project Reactor等技術(shù)。 Gateway 使用的Webflux中的reactor-netty響應(yīng)式編程組件,底層使用了 Netty 通訊框架。Spring Cloud Gateway能干嘛呢? Gateway是原zuul1.x版的替代。 Spring Cloud Gateway 與 Zuul的區(qū)別: Zuu

    2024年02月03日
    瀏覽(24)
  • spring cloud gateway網(wǎng)關(guān)和鏈路監(jiān)控

    spring cloud gateway網(wǎng)關(guān)和鏈路監(jiān)控

    文章目錄 目錄 文章目錄 前言 一、網(wǎng)關(guān) 1.1 gateway介紹 1.2 如何使用gateway? 1.3 網(wǎng)關(guān)優(yōu)化 1.4自定義斷言和過(guò)濾器 1.4.1 自定義斷言 二、Sleuth--鏈路追蹤 2.1 鏈路追蹤介紹 2.2 Sleuth介紹 2.3 使用 2.4?Zipkin的集成 ?2.5 使用可視化zipkin來(lái)監(jiān)控微服務(wù) 總結(jié) 所謂的API網(wǎng)關(guān),就是指系統(tǒng)的 統(tǒng)

    2024年02月02日
    瀏覽(30)
  • Spring Cloud Gateway 網(wǎng)關(guān)實(shí)現(xiàn)白名單功能

    1 摘要 對(duì)于微服務(wù)后臺(tái)而言,網(wǎng)關(guān)層作為所有網(wǎng)絡(luò)請(qǐng)求的入口。一般基于安全考慮,會(huì)在網(wǎng)關(guān)層做權(quán)限認(rèn)證,但是對(duì)于一些例如登錄、注冊(cè)等接口以及一些資源數(shù)據(jù),這些是不需要有認(rèn)證信息,因此需要在網(wǎng)關(guān)層設(shè)計(jì)一個(gè)白名單的功能。本文將基于 Spring Cloud Gateway 2.X 實(shí)現(xiàn)白

    2023年04月08日
    瀏覽(29)
  • 【Spring Cloud Alibaba】8.路由網(wǎng)關(guān)(Gateway)

    【Spring Cloud Alibaba】8.路由網(wǎng)關(guān)(Gateway)

    接下來(lái)對(duì)服務(wù)消費(fèi)者添加路由網(wǎng)關(guān)來(lái)實(shí)現(xiàn)統(tǒng)一訪問(wèn)接口,本操作先要完成之前的步驟,詳情請(qǐng)參照【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程 Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0 , Spring Boot 2.0 和 Project Reactor 等技術(shù)開發(fā)的網(wǎng)關(guān),該項(xiàng)目提供了一個(gè)庫(kù),用于在 Spring W

    2023年04月24日
    瀏覽(22)
  • Spring Cloud GateWay 網(wǎng)關(guān)的相關(guān)面試題

    Spring Cloud GateWay如何實(shí)現(xiàn)限流? 1.Spring Cloud GateWay使用令牌桶算法實(shí)現(xiàn)限流(Nginx使用漏桶算法實(shí)現(xiàn)限流 ) 2.Spring Cloud GateWay默認(rèn)使用Redis 的RateLimter限流算法來(lái)實(shí)現(xiàn),所以需要引入Redis依賴 3.使用的過(guò)程中,主要配置 令牌桶填充的速率,令牌桶容量,指定限流的key 4.限流的Ke

    2024年02月13日
    瀏覽(21)
  • Spring Cloud Alibaba 系列之 Gateway(網(wǎng)關(guān))

    Spring Cloud Alibaba 系列之 Gateway(網(wǎng)關(guān))

    網(wǎng)關(guān)作為流量的入口,常用的功能包括路由轉(zhuǎn)發(fā),權(quán)限校驗(yàn),限流等。 Spring Cloud Gateway 是Spring Cloud官方推出的第二代網(wǎng)關(guān)框架,定位于取代 Netflix Zuul1.0。相比 Zuul 來(lái)說(shuō),Spring Cloud ?Gateway 提供更優(yōu)秀的性能,更強(qiáng)大的有功能。 Spring Cloud Gateway 是由 WebFlux + Netty + Reactor 實(shí)現(xiàn)的

    2024年02月10日
    瀏覽(25)
  • 微服務(wù)網(wǎng)關(guān):Spring Cloud Zuul 升級(jí) Spring Cloud Gateway 的核心要點(diǎn)

    微服務(wù)網(wǎng)關(guān):Spring Cloud Zuul 升級(jí) Spring Cloud Gateway 的核心要點(diǎn)

    在routes路由規(guī)則中,根據(jù)path去匹配,如果匹配中,就使用對(duì)應(yīng)的路由規(guī)則進(jìn)行請(qǐng)求轉(zhuǎn)發(fā) 如果無(wú)法從routes中匹配,則根據(jù)path用“/”去截取第一段作為服務(wù)名進(jìn)行請(qǐng)求轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)時(shí),默認(rèn)將第一段截取調(diào) 如果截取的服務(wù)名不在注冊(cè)中心中存在服務(wù),則報(bào)錯(cuò)404 在routes路由規(guī)則中

    2024年02月07日
    瀏覽(27)
  • Gateway網(wǎng)關(guān)組件(在Spring Cloud整合Gateway(idea19版本))

    Gateway網(wǎng)關(guān)組件(在Spring Cloud整合Gateway(idea19版本))

    ????????Spring Cloud Gateway官網(wǎng):Spring Cloud Gateway ????????局域網(wǎng)中就有網(wǎng)關(guān)這個(gè)概念,局域網(wǎng)接收數(shù)據(jù)或發(fā)送數(shù)據(jù)都要通過(guò)網(wǎng)關(guān),比如使用VMware虛擬機(jī)軟件搭建虛擬機(jī)集群的時(shí)候,往往我們需要選擇IP段中的?個(gè)IP作為網(wǎng)關(guān)地址,網(wǎng)關(guān)可以對(duì)請(qǐng)求進(jìn)行控制,提升我們系統(tǒng)的安

    2024年02月16日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包