成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring Cloud Gateway實(shí)戰(zhàn)之五:內(nèi)置filter

reclay / 1091人閱讀

摘要:歡迎訪問我的歡迎訪問我的內(nèi)容所有原創(chuàng)文章分類匯總及配套源碼,涉及等本篇概覽本篇概覽作為實(shí)戰(zhàn)系列的第五篇,是時候了解過濾器的作用了,本篇咱們一起來了解內(nèi)置好的過濾器,真是種類繁多功能強(qiáng)大過濾器顧名思義,就是在請求頭部添加指定的內(nèi)容帶有的完整配

歡迎訪問我的GitHub

https://github.com/zq2599/blog_demos

內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;

本篇概覽

  • 作為《Spring Cloud Gateway實(shí)戰(zhàn)》系列的第五篇,是時候了解過濾器(filter)的作用了,本篇咱們一起來了解Spring Cloud Gateway內(nèi)置好的過濾器,真是種類繁多功能強(qiáng)大

AddRequestHeader

  • AddRequestHeader過濾器顧名思義,就是在請求頭部添加指定的內(nèi)容
  • 帶有predicate的完整配置:
server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:            - Path=/hello/**          filters:            - AddRequestHeader=x-request-foo, bar-config
  • 帶有predicate的完整動態(tài)配置:
[    {        "id": "path_route_addr",        "uri": "http://127.0.0.1:8082",        "predicates": [            {                "name": "Path",                "args": {                    "pattern": "/hello/**"                }            }        ],        "filters": [            {                "name": "AddRequestHeader",                "args": {                    "name": "x-request-foo",                    "value": "bar-dynamic"                }            }        ]    }]
  • 實(shí)際效果:

在這里插入圖片描述

AddRequestParameter

  • AddRequestParameter過濾器顧名思義,就是添加請求參數(shù)

  • 配置如下,服務(wù)提供方收到的請求中會多一個參數(shù),名為foo,值為bar-config:

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:            - Path=/hello/**          filters:            - AddRequestParameter=foo, bar-config
  • 帶有predicate的完整動態(tài)配置:
[    {        "id": "path_route_addr",        "uri": "http://127.0.0.1:8082",        "predicates": [            {                "name": "Path",                "args": {                    "pattern": "/hello/**"                }            }        ],        "filters": [            {                "name": "AddRequestParameter",                "args": {                    "name": "foo",                    "value": "bar-dynamic"                }            }        ]    }]
  • 實(shí)際效果:

在這里插入圖片描述

AddResponseHeader

  • AddResponseHeader過濾器就是在響應(yīng)的header中添加參數(shù)

  • 配置如下,客戶端收到的響應(yīng),其header中會多一個參數(shù),名為foo,值為bar-config-response:

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:          - Path=/hello/**          filters:          - AddResponseHeader=foo, bar-config-response
  • 帶有predicate的完整動態(tài)配置:
[    {        "id": "path_route_addr",        "uri": "http://127.0.0.1:8082",        "predicates": [            {                "name": "Path",                "args": {                    "pattern": "/hello/**"                }            }        ],        "filters": [            {                "name": "AddResponseHeader",                "args": {                    "name": "foo",                    "value": "bar-dynamic-response"                }            }        ]    }]
  • 實(shí)際效果:

在這里插入圖片描述

DedupeResponseHeader

  • 服務(wù)提供方返回的response的header中,如果有的key出線了多個value(例如跨域場景下的Access-Control-Allow-Origin),DedupeResponseHeader過濾器可以將重復(fù)的value剔除調(diào),剔除策略有三種:RETAIN_FIRST (保留第一個,默認(rèn)), RETAIN_LAST(保留最后一個), RETAIN_UNIQUE(去重)

  • 配置如下,指定了兩個header key的去重,策略是保留最后一個:

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:          - Path=/hello/**          filters:          - DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin, RETAIN_LAST

DedupeResponseHeader

  • 服務(wù)提供方返回的response的header中,如果有的key出線了多個value(例如跨域場景下的Access-Control-Allow-Origin),DedupeResponseHeader過濾器可以將重復(fù)的value剔除調(diào),剔除策略有三種:RETAIN_FIRST (保留第一個,默認(rèn)), RETAIN_LAST(保留最后一個), RETAIN_UNIQUE(去重)

  • 配置如下,指定了兩個header key的去重,策略是保留最后一個:

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:          - Path=/hello/**          filters:          - DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin, RETAIN_LAST

CircuitBreaker

  • CircuitBreaker即斷路器,咱們在多帶帶的一篇中深入體驗這個強(qiáng)大的功能吧

FallbackHeaders

  • FallbackHeaders一般和CircuitBreaker配合使用,來看下面的配置,發(fā)生斷路后,請求會被轉(zhuǎn)發(fā)FallbackHeaders去處理,此時FallbackHeaders會在header中指定的key上添加異常信息:
spring:  cloud:    gateway:      routes:      - id: ingredients        uri: lb://ingredients        predicates:        - Path=//ingredients/**        filters:        - name: CircuitBreaker          args:            name: fetchIngredients            fallbackUri: forward:/fallback      - id: ingredients-fallback        uri: http://localhost:9994        predicates:        - Path=/fallback        filters:        - name: FallbackHeaders          args:            executionExceptionTypeHeaderName: Test-Header

MapRequestHeader

  • MapRequestHeader用于header中的鍵值對復(fù)制,如下配置的意思是:如果請求header中有Blue就新增名為X-Request-Red的key,其值和Blue的值一樣

  • 配置如下,指定了兩個header key的去重,策略是保留最后一個:

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:          - Path=/hello/**          filters:          - MapRequestHeader=Blue, X-Request-Red
  • 如下圖,請求header中有Blue:

在這里插入圖片描述

  • 再看服務(wù)提供方的日志,顯示header中多了X-Request-Red:

在這里插入圖片描述

  • 如果請求的header中已經(jīng)存在X-Request-Red會出現(xiàn)什么情況呢?如下圖,咱們把X-Request-Red寫在請求header中:

在這里插入圖片描述

  • 在服務(wù)提供方打斷點(diǎn),可以發(fā)現(xiàn)神奇的一幕,header中的所有key,對應(yīng)的值其實(shí)都是集合,只是大多數(shù)情況下集合里面只有一個元素,而MapRequestHeader新增的元素會被放入這個集合,不會影響原有內(nèi)容:

在這里插入圖片描述

PrefixPath

  • PrefixPath很好理解,就是轉(zhuǎn)發(fā)到服務(wù)提供者的時候,給path加前綴

  • 例如我這邊服務(wù)提供者原始地址是http://127.0.0.1:8082/hello/str配置如下,如果我給網(wǎng)關(guān)配置PrefixPath=hello,那么訪問網(wǎng)關(guān)的時候,請求路徑中就不需要hello了,配置如下:

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:          - Path=/str          filters:          - PrefixPath=/hello
  • 如下圖,請求路徑無需hello

在這里插入圖片描述

PreserveHostHeader

  • PreserveHostHeader在轉(zhuǎn)發(fā)請求到服務(wù)提供者的時候,會保留host信息(否則就只能由HTTP client來決定了)

  • 先看不使用PreserveHostHeader的效果,如下圖,服務(wù)提供者收到的請求header中的host就是網(wǎng)關(guān)配置的信息:

在這里插入圖片描述

  • 加上PreserveHostHeader試試,如下圖紅框,是真正的host信息:

在這里插入圖片描述

RequestRateLimiter

  • RequestRateLimiter用于限流,涉及內(nèi)容較多,就放在多帶帶的章節(jié)深入研究吧

RedirectTo

  • RedirectTo的功能簡單直白:跳轉(zhuǎn)到指定位置,下面的配置中,uri字段明顯是一個無效的地址,但請求還是會被RedirectTo轉(zhuǎn)發(fā)到指定位置去:
server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.1.1.1:11111          predicates:          - Path=/hello/**          filters:          - RedirectTo=302, http://127.0.0.1:8082/hello/str

RemoveRequestHeader

  • RemoveRequestHeader很好理解,刪除請求header中的指定值

  • 下面的配置會刪除請求header中的foo:

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:          - Path=/hello/**          filters:          - RemoveRequestHeader=foo

RemoveResponseHeader

  • RemoveResponseHeader刪除響應(yīng)header中的指定值

  • 下面的配置會刪除響應(yīng)header中的foo:

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:          - Path=/hello/**          filters:          - RemoveResponseHeader=foo

RemoveRequestParameter

  • RemoveRequestParameter 刪除請求參數(shù)中的指定參數(shù)

  • 下面的配置會刪除請求參數(shù)中的foo:

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:          - Path=/hello/**          filters:          - RemoveRequestParameter=foo1

RewritePath

  • RewritePath非常實(shí)用,將請求參數(shù)中的路徑做變換

  • 下面的配置會將/test/str轉(zhuǎn)成/hello/str

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:          - Path=/test/**          filters:          - RewritePath=/test/?(?.*), /hello/$/{segment}
  • 請求如下,可見path中的test會被網(wǎng)關(guān)修改成hello,變成正確的請求路徑:

在這里插入圖片描述

RewriteLocationResponseHeader

  • RewriteLocationResponseHeader用于改寫response中的location信息

  • 配置如下,一共是四個參數(shù):stripVersionMode、locationHeaderName、hostValue、protocolsRegex

  • 例如請求是api.example.com/some/object/name,response的location是object-service.prod.example.net/v2/some/object/id,最終會被下面的filter改寫為api.example.com/some/object/id

spring:  cloud:    gateway:      routes:      - id: rewritelocationresponseheader_route        uri: http://example.org        filters:        - RewriteLocationResponseHeader=AS_IN_REQUEST, Location, ,
  • stripVersionMode的策略一共三種:

NEVER_STRIP:不執(zhí)行
AS_IN_REQUEST :原始請求沒有vesion,就執(zhí)行
ALWAYS_STRIP :固定執(zhí)行

  • Location用于替換host:port部分,如果沒有就是用Request中的host

  • protocolsRegex用于匹配協(xié)議,如果匹配不上,name過濾器啥都不做

RewriteResponseHeader

  • RewriteResponseHeader很好理解:修改響應(yīng)header,參數(shù)有三個:header的key,匹配value的正則表達(dá)式,修改value的結(jié)果

  • 下面的配置表示修改響應(yīng)header中X-Response-Red這個key的value,找到password=xxx的內(nèi)容,改成password=***

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:          - Path=/test/**          filters:          - RewriteResponseHeader=X-Response-Red, , password=[^&]+, password=***

SecureHeaders

  • SecureHeaders會在響應(yīng)的header中添加很多和安全相關(guān)的內(nèi)容,配置如下:
server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:          - Path=/hello/**          filters:          - SecureHeaders
  • 響應(yīng)如下,可見header中添加了很多信息:

在這里插入圖片描述

  • 如果不想返回上圖中的某些內(nèi)容,可以在配置文件中關(guān)閉掉,如下圖紅框,x-frame-options和strict-transport-security兩項被設(shè)置為不返回了:

在這里插入圖片描述

  • 再試試,得到如下響應(yīng),可見x-frame-options和strict-transport-security都沒有返回:

在這里插入圖片描述

SetPath

  • SetPath配合predicates使用,下面的配置會將請求/test/str改成/hello/str,可見這個segment是在predicates中賦值的,然后再filters中拿來用:
server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      filter:        secure-headers:          disable:            - x-frame-options            - strict-transport-security      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:            - Path=/test/{segment}          filters:            - SetPath=/hello/{segment}

SetRequestHeader

  • SetRequestHeader顧名思義,就是改寫請求的header,將指定key改為指定value,如果該key不存在就創(chuàng)建:
server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      filter:        secure-headers:          disable:            - x-frame-options            - strict-transport-security      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:            - Path=/hello/**          filters:            - SetRequestHeader=X-Request-Red, Blue
  • 和SetPath類似,SetRequestHeader也可以和predicates配合,在predicates中定義的變量可以用在SetRequestHeader中,如下所示,當(dāng)請求是/hello/str的時候,header中X-Request-Red的值就是Blue-str
server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      filter:        secure-headers:          disable:            - x-frame-options            - strict-transport-security      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:            - Path=/hello/{segment}          filters:            - SetRequestHeader=X-Request-Red, Blue-{segment}

SetResponseHeader

  • SetResponseHeader顧名思義,就是改寫響應(yīng)的header,將指定key改為指定value,如果該key不存在就創(chuàng)建:
server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      filter:        secure-headers:          disable:            - x-frame-options            - strict-transport-security      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:            - Path=/hello/**          filters:            - SetResponseHeader=X-Request-Red, Blue

SetStatus

  • SetStatus很好理解:控制返回code,下面的設(shè)置會返回500:
server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:            - Path=/hello/**          filters:            - SetStatus=500
  • 測試效果如下圖,服務(wù)提供者的內(nèi)容會正常返回,但是返回碼已經(jīng)被改為500了:

在這里插入圖片描述

  • 如果您想用SetStatus修改返回碼,同時又不想丟掉真實(shí)的返回碼,可以增加如下配置,這樣真實(shí)的返回碼就被放在名為original-status-header-name的key中了:
server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      set-status:        original-status-header-name: aaabbbccc      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:            - Path=/hello/**          filters:            - SetStatus=500

StripPrefix

  • StripPrefix是個很常用的filter,例如請求是/aaa/bbb/hello/str,我們要想將其轉(zhuǎn)為/hello/str,用StripPrefix=2即可,前面兩級path都被刪掉了:
server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      set-status:        original-status-header-name: aaabbbccc      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:            - Path=/aaa/**          filters:            - StripPrefix=2
  • 如下圖,響應(yīng)正常:

在這里插入圖片描述

Retry

  • 顧名思義,Retry就是重試,需要以下參數(shù)配合使用:
  1. retries:重試次數(shù)
  2. statuses:遇到什么樣的返回狀態(tài)才重試,取值參考:org.springframework.http.HttpStatus
  3. methods:那些類型的方法會才重試(GET、POST等),取值參考:org.springframework.http.HttpMethod
  4. series:遇到什么樣的series值才重試,取值參考:org.springframework.http.HttpStatus.Series
  5. exceptions:遇到什么樣的異常才重試
  6. backoff:重試策略,由多個參數(shù)構(gòu)成,例如firstBackoff
  • 參考配置如下:
spring:  cloud:    gateway:      routes:      - id: retry_test        uri: http://localhost:8080/flakey        predicates:        - Host=*.retry.com        filters:        - name: Retry          args:            retries: 3            statuses: BAD_GATEWAY            methods: GET,POST            backoff:              firstBackoff: 10ms              maxBackoff: 50ms              factor: 2              basedOnPreviousValue: false

RequestSize

  • RequestSize也很常用:控制請求大小,可以使用KB或者MB等單位,超過這個大小就會返回413錯誤(Payload Too Large),
spring:  cloud:    gateway:      routes:      - id: request_size_route        uri: http://localhost:8080/upload        predicates:        - Path=/upload        filters:        - name: RequestSize          args:            maxSize: 5000000
  • 注意,如果沒有設(shè)置RequestSize,Spring Cloud Gateway默認(rèn)的上限是5MB

SetRequestHostHeader

  • SetRequestHostHeader會修改請求header中的host值

  • 下面的配置,會將請求header中的host改為aaabbb

server:  #服務(wù)端口  port: 8081spring:  application:    name: hello-gateway  cloud:    gateway:      routes:        - id: path_route          uri: http://127.0.0.1:8082          predicates:            - Path=/hello/**          filters:        - name: SetRequestHostHeader        args:          host: aaabbb
  • 在服務(wù)提供者的代碼中打斷點(diǎn),如下圖,可見host已經(jīng)被改為aaabbb

在這里插入圖片描述

ModifyRequestBody

  • ModifyRequestBody用于修改請求的body內(nèi)容,這里官方推薦用代碼來配置,如下所示,請求body中原本是字符串,結(jié)果被改成了Hello對象的實(shí)例:
@Beanpublic RouteLocator routes(RouteLocatorBuilder builder) {    return builder.routes()        .route("rewrite_request_obj", r -> r.host("*.rewriterequestobj.org")            .filters(f -> f.prefixPath("/httpbin")                .modifyRequestBody(String.class, Hello.class, MediaType.APPLICATION_JSON_VALUE,                    (exchange, s) -> return Mono.just(new Hello(s.toUpperCase())))).uri(uri))        .build();}static class Hello {    String message;    public Hello() { }    public Hello(String message) {        this.message = message;    }    public String getMessage() {        return message;    }    public void setMessage(String message) {        this.message = message;    }}

ModifyResponseBody

  • ModifyResponseBody與前面的ModifyRequestBody類似,官方建議用代碼實(shí)現(xiàn),下面的代碼作用是將響應(yīng)body的內(nèi)容改為全部大寫:
@Beanpublic RouteLocator routes(RouteLocatorBuilder builder) {    return builder.routes()        .route("rewrite_response_upper", r -> r.host("*.rewriteresponseupper.org")            .filters(f -> f.prefixPath("/httpbin")                .modifyResponseBody(String.class, String.class,                    (exchange, s) -> Mono.just(s.toUpperCase()))).uri(uri))        .build();}

TokenRelay

  • 在使用第三方鑒權(quán)的時候,如OAuth2,用TokenRelay可以將第三方的token轉(zhuǎn)發(fā)到服務(wù)提供者那里去:
spring:  cloud:    gateway:      routes:      - id: resource        uri: http://localhost:9000        predicates:        - Path=/resource        filters:        - TokenRelay=
  • 記得還要添加jar包依賴org.springframework.boot:spring-boot-starter-oauth2-client

設(shè)置全局filter

  • 前面的例子中,所有filter都放在路由策略中,配合predicates一起使用的,如果您想配置全局生效的filter,可以在配置文件中做以下設(shè)置,下面的配置表示AddResponseHeader和PrefixPath會處理所有請求,和路由設(shè)置無關(guān):
spring:  cloud:    gateway:      default-filters:      - AddResponseHeader=X-Response-Default-Red, Default-Blue      - PrefixPath=/httpbin
  • 至此,大部分內(nèi)置過濾器咱們已經(jīng)了解了,有幾個略微復(fù)雜的留待后面的章節(jié)深入學(xué)習(xí)

你不孤單,欣宸原創(chuàng)一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 數(shù)據(jù)庫+中間件系列
  6. DevOps系列

歡迎關(guān)注公眾號:程序員欣宸

微信搜索「程序員欣宸」,我是欣宸,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/123758.html

相關(guān)文章

  • Spring Cloud Gateway修改請求和響應(yīng)body的內(nèi)容

    摘要:歡迎訪問我的歡迎訪問我的內(nèi)容所有原創(chuàng)文章分類匯總及配套源碼,涉及等本篇概覽本篇概覽作為實(shí)戰(zhàn)系列的第九篇,咱們聊聊如何用修改原始請求和響應(yīng)內(nèi)容,以及修改過程中遇到的問題首先是修改請求,如下圖,瀏覽器是請求發(fā)起方,真實(shí)參數(shù)只有,經(jīng)過網(wǎng)關(guān)時被塞歡迎訪問我的GitHubhttps://github.com/zq2599/blog_demos內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼,涉及Java、Dock...

    ivyzhang 評論0 收藏0
  • Spring Cloud Gateway 之 AddRequestHeader GatewayFil

    摘要:類似的工廠類還有和,,,這幾個就不做單獨(dú)講解了,使用方式是一樣的。配置示列配置示列討論時間文章中講的這幾個工廠類的作用我們已經(jīng)了解了,那具體的使用場景有哪些適合在什么場景下使用呢歡迎大家留言討論。 今天我們來學(xué)習(xí)下GatewayFilter Factory,中文解釋就是過濾器工廠。 官方文檔對GatewayFilter Factory的介紹: Route filters allow t...

    宋華 評論0 收藏0
  • Spring Cloud Gateway限流實(shí)戰(zhàn)

    摘要:歡迎訪問我的歡迎訪問我的內(nèi)容所有原創(chuàng)文章分類匯總及配套源碼,涉及等本篇概覽本篇概覽本文是實(shí)戰(zhàn)系列的第八篇,經(jīng)過前面的學(xué)習(xí),咱們對過濾器已了解得差不多,今天來補(bǔ)全過濾器的最后一個版塊限流默認(rèn)的限流器是基于實(shí)現(xiàn)的,限流算法是大家熟悉的令牌桶關(guān)于歡迎訪問我的GitHubhttps://github.com/zq2599/blog_demos內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼,涉及Java、Doc...

    stonezhu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<