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

SpringCloud微服務網(wǎng)關(guān)限流方式

 更新時間:2024年08月13日 10:02:23   作者:王樂樂君  
這篇文章主要介紹了SpringCloud微服務網(wǎng)關(guān)限流方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1.限流的兩種實現(xiàn)方式

nginx限流

在nginx中,通過限流可以規(guī)定一個一個地址映射每一秒可以被訪問多少次,甚至是限制每一個用戶(這里的用戶指的是訪問改地址映射的用戶的IP)在規(guī)定的時間內(nèi)可以訪問的次數(shù),防止用戶多次操作或者是惡意請求攻擊服務。

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

網(wǎng)關(guān)可以提供用戶統(tǒng)一的訪問入口,在Nginx限流過后,依然會有很大一波流量會承載的網(wǎng)關(guān)上,那這個時候的限流是針對于網(wǎng)關(guān)甚至是針對于網(wǎng)關(guān)所掛在的微服務,我們需要限定用戶在只能針對某個微服務在特定的時間段內(nèi)只能訪問多少次,如果不加限制的會,可能會因為并發(fā)量的過大導致服務宕機,甚至引起雪崩效應。

2.架構(gòu)圖

3.為什么需要兩個限流

原因有以下幾點:

  • 1.Nginx限流過后流量仍然很大:為nginx限流只是針對于用戶訪問的一個入口,這個入口直接開放給網(wǎng)關(guān),這個時候你不清楚用戶真正的訪問意圖,如果在這里的限制力度過大,導致用戶能請求的次數(shù)過少,就會導致頁面加載緩慢的問題,畢竟有時候一個頁面的請求甚至會超過100個(例如淘寶網(wǎng)等)
  • 2.無法做到針對單個服務的限流:如果你Nginx開放了一秒一個用戶200r/s的請求,如果有人惡意的將所有的請求對準你的一個服務的一個借口,很可能導致服務宕機,所以需要網(wǎng)關(guān)這層針對每個服務進行限流。
  • 3.無法實現(xiàn)一些自定義的限流模型:單獨的Nginx限流過于單一,無法滿足特定的業(yè)務需求。

4.如何實現(xiàn)限流

具體的實現(xiàn)方式是令牌桶算法,就是某一時刻一個IP最多只能訪問有效的次數(shù)。

創(chuàng)建令牌桶的實現(xiàn)

這里需要將其配置為bean,而且需要傳入一個唯一標識作為令牌,這里的令牌最好是訪問你的服務的IP,這樣就可以做到限制。

    @Bean(name = "ipKeyResolver")
    public KeyResolver userKeyResolver(){
        return new KeyResolver() {
            @Override
            public Mono<String> resolve(ServerWebExchange exchange) {
                String ip = exchange.getRequest().getRemoteAddress().getHostString();
                System.out.println("你的IP地址是"+ip);
                return Mono.just(ip);
            }
        };
    }

配置

這里是需要配置redis的,因為這個令牌桶是基于redis實現(xiàn)的。

spring:
  application:
    name: gateway-admin
  cloud:
    gateway:
      globalcors:
        cors-configurations:
          '[/**]':
              allowedOrigins: "*"
              allowedMethods:
              - GET
              - POST
              - PUT
              - DELETE
      routes:
      - id: file
        #uri: http://localhost:8001
        uri: lb://file
        filters:
        - StripPrefix=1
        #固定配置
        - name: RequestRateLimiter
          args:
          	#上面配置的令牌桶的實現(xiàn)的bean的名稱
            key-resolver: "#{@ipKeyResolver}"
            #可以允許的一秒中的訪問次數(shù)
            redis-rate-limiter.replenishRate: 1
            redis-rate-limiter.burstcapacity: 1
        predicates:
        - Path=/brand/**
  redis:
    host: redis的ip地址
    port: 6379

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java多態(tài)性定義與用法實例詳解

    Java多態(tài)性定義與用法實例詳解

    這篇文章主要介紹了Java多態(tài)性定義與用法,較為詳細的分析了多態(tài)的概念、功能以及java定義與實現(xiàn)面向?qū)ο蠖鄳B(tài)性的相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • java自動裝箱拆箱深入剖析

    java自動裝箱拆箱深入剖析

    基本數(shù)據(jù)(Primitive)類型的自動裝箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0開始提供的功能。java語言規(guī)范中說道:在許多情況下包裝與解包裝是由編譯器自行完成的(在這種情況下包裝成為裝箱,解包裝稱為拆箱)
    2012-11-11
  • Mybatis中Mapper標簽總結(jié)大全

    Mybatis中Mapper標簽總結(jié)大全

    這篇文章主要介紹了Mybatis中Mapper標簽總結(jié)大全,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • spring boot的健康檢查HealthIndicators實戰(zhàn)

    spring boot的健康檢查HealthIndicators實戰(zhàn)

    這篇文章主要介紹了spring boot的健康檢查HealthIndicators實戰(zhàn),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • idea一招搞定同步所有配置(導入或?qū)С鏊信渲?

    idea一招搞定同步所有配置(導入或?qū)С鏊信渲?

    使用intellij idea很長一段時間,軟件相關(guān)的配置也都按照自己習慣的設置好,如果需要重裝軟件,還得需要重新設置,本文就詳細的介紹了idea 同步所有配置,感興趣的可以了解一下
    2021-07-07
  • 簡單了解Java的默認和靜態(tài)方法

    簡單了解Java的默認和靜態(tài)方法

    這篇文章主要介紹了簡單了解Java的默認和靜態(tài)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Spring?Security?過濾器注冊脈絡梳理

    Spring?Security?過濾器注冊脈絡梳理

    這篇文章主要介紹了Spring?Security過濾器注冊脈絡梳理,Spring?Security在Servlet的過濾鏈中注冊了一個過濾器FilterChainProxy,它會把請求代理到Spring?Security自己維護的多個過濾鏈,每個過濾鏈會匹配一些URL,如果匹配則執(zhí)行對應的過濾器
    2022-08-08
  • MyBatis的模糊查詢mapper.xml的寫法講解

    MyBatis的模糊查詢mapper.xml的寫法講解

    這篇文章主要介紹了MyBatis的模糊查詢mapper.xml的寫法講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 在Spring Boot中使用Spring-data-jpa實現(xiàn)分頁查詢

    在Spring Boot中使用Spring-data-jpa實現(xiàn)分頁查詢

    如何使用jpa進行多條件查詢以及查詢列表分頁呢?下面我將介紹兩種多條件查詢方式。具體實例代碼大家參考下本文吧
    2017-07-07
  • mybatis二級緩存默認未開啟源碼的問題

    mybatis二級緩存默認未開啟源碼的問題

    這篇文章主要介紹了mybatis二級緩存默認未開啟源碼的問題及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論