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

【Spring Cloud】網(wǎng)關(guān)Gateway的請(qǐng)求過(guò)濾工廠(chǎng)RequestRateLimiterGatewayFilterFactory

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

概念

??????? 關(guān)于微服務(wù)網(wǎng)關(guān)Gateway中有幾十種過(guò)濾工廠(chǎng),這一篇博文記錄的是關(guān)于請(qǐng)求限流過(guò)濾工廠(chǎng),也就是標(biāo)題中的RequestRateLimiterGatewayFilterFactory。這個(gè)路由過(guò)濾工廠(chǎng)是用來(lái)判斷當(dāng)前請(qǐng)求是否應(yīng)該被處理,如果不會(huì)被處理就會(huì)返回HTTP狀態(tài)碼為429的code。接下來(lái)構(gòu)建兩個(gè)模塊,其中一個(gè)是服務(wù)模塊,一個(gè)是網(wǎng)關(guān)模塊來(lái)測(cè)試關(guān)于請(qǐng)求過(guò)濾工廠(chǎng)是否生效。

服務(wù)

引入依賴(lài)

<dependencies>
    <!-- 由于僅是測(cè)試 于是無(wú)需多引入微服務(wù)相關(guān)依賴(lài) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

修改yml配置

server:
  port: 8081

spring:
  application:
    name: cloud-demo

接口路徑

@RestController
@RequestMapping("/filter")
public class RateLimiterFilterController {

    @GetMapping("/requestRateLimiter")
    public String requestRateLimiter() {
        return "進(jìn)入了限流方法";
    }

}

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

引入依賴(lài)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 網(wǎng)關(guān) 需要注意的是網(wǎng)關(guān)中不要引入spring-boot-starter-web 否則啟動(dòng)報(bào)錯(cuò) -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
    <version>2.2.0.RELEASE</version>
</dependency>
<!-- Redis RateLimiter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>

修改yml配置

server:
  port: 8080

spring:
  application:
    name: cloud-gateway
  redis:
    host: IP
    port: 端口
    password: 密碼
  cloud:
    gateway:
      routes:
        - id: request-rate-limiter-route
          uri: http://127.0.0.1:8081
          predicates:
            - Path=/filter/requestRateLimiter/**
          filters:
            # 需要注意的是Redis要在5.x以上才會(huì)生效 并且有密碼情況下需要配置正確
            - name: RequestRateLimiter
              args:
                # 對(duì)應(yīng)的限流路由判斷
                key-resolver: "#{@userKeyResolver}"
                # 每秒生成的令牌數(shù)
                redis-rate-limiter.replenishRate: 2
                # 高并發(fā)情況下將每秒生成的令牌數(shù)增加的個(gè)數(shù) 即 replenishRate + burstCapacity
                redis-rate-limiter.burstCapacity: 2
                # 每個(gè)請(qǐng)求消耗的令牌個(gè)數(shù)
                redis-rate-limiter.requestedTokens: 2

接口

@Configuration
public class FilterConfig {

    @Bean
    public KeyResolver userKeyResolver() {
        // getFirst()是獲取MultiValueMap中的第一個(gè)key中的值 因?yàn)檫@個(gè)MultiValueMap不會(huì)產(chǎn)生key沖突導(dǎo)致value覆蓋的問(wèn)題
        return exchange -> Mono.just(exchange.getRequest().getQueryParams().getFirst("user"));
    }

}

測(cè)試

??????? 輸入:http://localhost:8080/filter/requestRateLimiter是無(wú)法訪(fǎng)問(wèn)的。因?yàn)樵贔ilterConfig配置類(lèi)中配置了userKeyResolver這個(gè)組件,所以需要在路徑上添加user參數(shù)。

??????? 輸入:http://localhost:8080/filter/requestRateLimiter?user=xxx可以正常訪(fǎng)問(wèn)的,但是把刷新的速率加快,直接報(bào)了以下的錯(cuò)誤,如果沒(méi)有報(bào)錯(cuò)也沒(méi)有顯示文本的,F(xiàn)12也可以看到路徑429錯(cuò)誤碼,這就是一開(kāi)始所說(shuō)的請(qǐng)求過(guò)多此過(guò)濾工廠(chǎng)會(huì)報(bào)429HTTP狀態(tài)碼的問(wèn)題。

【Spring Cloud】網(wǎng)關(guān)Gateway的請(qǐng)求過(guò)濾工廠(chǎng)RequestRateLimiterGatewayFilterFactory,SpringCloud,spring cloud,gateway,java

??????? 當(dāng)然,既然這個(gè)過(guò)濾工廠(chǎng)需要配置Redis,那么就一定會(huì)需要在Redis中存儲(chǔ)數(shù)據(jù)。打開(kāi)Redis可視化工具可以發(fā)現(xiàn),因?yàn)槲覜](méi)有指定存儲(chǔ)的庫(kù),所以默認(rèn)在0數(shù)據(jù)庫(kù)中,會(huì)被存儲(chǔ)兩個(gè)值。

????????一個(gè)為request_rate_limiter.(user名稱(chēng)).timestamp,另一個(gè)為request_rate_limiter.(user名稱(chēng)).tokens。這之后就是涉及到源碼的閱讀,本篇博文并不會(huì)介紹源碼,但后續(xù)會(huì)更新自定義路由過(guò)濾工廠(chǎng)。

【Spring Cloud】網(wǎng)關(guān)Gateway的請(qǐng)求過(guò)濾工廠(chǎng)RequestRateLimiterGatewayFilterFactory,SpringCloud,spring cloud,gateway,java

【Spring Cloud】網(wǎng)關(guān)Gateway的請(qǐng)求過(guò)濾工廠(chǎng)RequestRateLimiterGatewayFilterFactory,SpringCloud,spring cloud,gateway,java文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-723767.html

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

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(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系例—GatewayFilter 工廠(chǎng)

    目錄 6.1.AddRequestHeader 6.2.AddRequestHeadersIfNotPresent 6.3.AddRequestParameter 6.4.AddResponseHeader 6.5.CircuitBreaker 6.5.1. 熔斷指定的狀態(tài)碼 6.6.CacheRequestBody 6.7.DedupeResponseHeader 6.8.FallbackHeaders 6.9.JsonToGrpc 6.10.LocalResponseCache 6.11.MapRequestHeader 6.12.ModifyRequestBody 6.13.ModifyResponseBody 6.14.PrefixPath 6.15.Preser

    2024年02月13日
    瀏覽(42)
  • spring cloud gateway網(wǎng)關(guān)(一)之網(wǎng)關(guān)路由

    spring cloud gateway網(wǎng)關(guān)(一)之網(wǎng)關(guān)路由

    1、gateway相關(guān)介紹 在微服務(wù)架構(gòu)中,系統(tǒng)往往由多個(gè)微服務(wù)組成,而這些服務(wù)可能部署在不同機(jī)房、不同地區(qū)、不同域名下。這種情況下,客戶(hù)端(例如瀏覽器、手機(jī)、軟件工具等)想要直接請(qǐng)求這些服務(wù),就需要知道它們具體的地址信息,例如 IP 地址、端口號(hào)等。這種客戶(hù)

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

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

    ?? 簡(jiǎn)介:java系列技術(shù)分享(??持續(xù)更新中…??) ?? 初衷:一起學(xué)習(xí)、一起進(jìn)步、堅(jiān)持不懈 ?? 如果文章內(nèi)容有誤與您的想法不一致,歡迎大家在評(píng)論區(qū)指正?? ?? 希望這篇文章對(duì)你有所幫助,歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? ?? 更多文章請(qǐng)點(diǎn)擊 Gateway官網(wǎng) :https://spring.io/projects/

    2024年02月16日
    瀏覽(21)
  • Spring Cloud Gateway快速入門(mén)(二)——斷言工廠(chǎng)

    Spring Cloud Gateway快速入門(mén)(二)——斷言工廠(chǎng)

    Spring Cloud Gateway包含許多內(nèi)置的Route Predicate工廠(chǎng)。所有這些斷言都匹配HTTP請(qǐng)求的不同屬性。多路由斷言工廠(chǎng)通過(guò)and組合。 官方提供的路由工廠(chǎng): 這些斷言工廠(chǎng)的配置方式,參照官方文檔:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.1.0.RELEASE/single/spring-cloud-gateway.html

    2024年02月07日
    瀏覽(26)
  • Spring Cloud Gateway 過(guò)濾器

    Spring Cloud Gateway 過(guò)濾器

    Spring Cloud Gateway 過(guò)濾器的種類(lèi)有30多種。 官文文檔地址: Spring Cloud Gateway https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gatewayfilter-factories Spring Cloud Gateway大體可以分為下面兩種類(lèi)型的過(guò)濾器: 1、內(nèi)置的過(guò)濾器 ? ? ? ? 1.1、內(nèi)置的局部過(guò)濾器 ? ? ? ? 1.2、內(nèi)置的全

    2024年03月28日
    瀏覽(21)
  • Spring cloud教程Gateway服務(wù)網(wǎng)關(guān)

    Spring cloud教程Gateway服務(wù)網(wǎng)關(guān)

    寫(xiě)在前面的話(huà): 本筆記在參考網(wǎng)上視頻以及博客的基礎(chǔ)上,只做個(gè)人學(xué)習(xí)筆記,如有侵權(quán),請(qǐng)聯(lián)系刪除,謝謝! Spring Cloud Gateway 是 Spring Cloud 的一個(gè)全新項(xiàng)目,該項(xiàng)目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等響應(yīng)式編程和事件流技術(shù)開(kāi)發(fā)的網(wǎng)關(guān),它旨在為微服務(wù)架構(gòu)提

    2024年02月08日
    瀏覽(31)
  • Spring Cloud Gateway 過(guò)濾器詳解

    Spring Cloud Gateway 過(guò)濾器詳解

    Spring Cloud Gateway根據(jù)作用范圍劃分為:GatewayFilter和GlobalFilter 由filter工作流程點(diǎn),可以知道filter有著非常重要的作用,在“pre”類(lèi)型的過(guò)濾器可以做參數(shù)校驗(yàn)、權(quán)限校驗(yàn)、流量監(jiān)控、日志輸出、協(xié)議轉(zhuǎn)換等,在“post”類(lèi)型的過(guò)濾器中可以做響應(yīng)內(nèi)容、響應(yīng)頭的修改,日志的輸

    2023年04月08日
    瀏覽(24)
  • Spring Cloud GateWay 全局過(guò)濾器

    這是一個(gè)自定義的 Spring Cloud Gateway 全局過(guò)濾器(Global Filter)。在 Spring Cloud Gateway 中,全局過(guò)濾器可以在請(qǐng)求被路由到目標(biāo)服務(wù)之前或之后執(zhí)行一些操作。這個(gè)過(guò)濾器實(shí)現(xiàn)了 GlobalFilter 接口和 Ordered 接口,這兩個(gè)接口的作用如下: GlobalFilter 接口: 這是一個(gè) Spring Cloud Gateway 提

    2024年02月11日
    瀏覽(20)
  • 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 開(kāi)發(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) 常見(jiàn)斷言 示例 Filter(過(guò)濾器) filter分類(lèi) Pre 類(lèi)型 Post 類(lèi)型 網(wǎng)關(guān)過(guò)濾器 格式

    2024年02月08日
    瀏覽(31)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包