springcloud zuul 閘道器限流

2022-08-03 03:03:11 字數 4399 閱讀 1631

1.新增pom包

com.marcosbarbero.cloud

spring-cloud-zuul-ratelimit

2.0.6.release

2.啟動類

@enablediscoveryclient

@enablezuulproxy

public

class

public

static

void

main(string args)

}3.yml配置

##############################

# 閘道器配置

#############################

server:

port:

8080

spring:

name: cmtt-gateway

desc: 系統中心配置

feign:

hystrix:

enabled:

true

#feginclient 熔斷超時配置

hystrix:

command:

default

: execution:

isolation:

thread:

timeoutinmilliseconds:

60000

#ribbon超時和重試配置【重試次數=maxautoretries + maxautoretriesnextserver + (maxautoretries *maxautoretriesnextserver)】

# 熔斷時間與ribbon超時關係:

# 重試時間 =(maxautoretries+maxautoretriesnextserver+maxautoretriesnextserver*maxautoretries)*readtimeout+網路響應時間

# 重試時間

ribbon:

oktoretryonalloperations:

false

#是否對所有請求進行重試

maxautoretries:

0#對當前例項的重試次數,預設0

maxautoretriesnextserver:

0#對切換例項的重試次數,預設1

readtimeout:

60000

#負載均衡超時時間,預設值5000

connecttimeout:

60000

#ribbon請求連線的超時時間,預設值2000

zuul:

host:

socket-timeout-millis: 88000

connect-timeout-millis: 88000

routes:

auth:

path: /biz/sys/*

* serviceid: cmtt-biz-sys

sensitive-headers: access-control-allow-origin

pmis:

path: /biz/pmis/**

serviceid: cmtt-biz-project

sensitive-headers: access-control-allow-origin

fms:

path: /biz/fms/**

serviceid: cmtt-biz-fms

ratelimit:

key-prefix: springcloud-book #按粒度拆分的臨時變數key字首

enabled: true #啟用開關

repository: in_memory #key儲存型別,預設是in_memory本地記憶體,此外還有多種形式

behind-proxy: true #表示**之後

default-policy: #全侷限流策略,可單獨細化到服務粒度

limit: 2 #在乙個單位時間視窗的請求數量

quota: 1 #在乙個單位時間視窗的請求時間限制

refresh-interval: 3 #單位時間視窗

type:

- user #可指定使用者粒度

- origin #可指定客戶端位址粒度

- url #可指定url粒度

全域性開啟了限流,策略是,3秒內訪問不允許超過 2 次,並且這 2 次請求要小於 1 秒。

下面是針對某個服務

##############################

# 閘道器配置

#############################

server:

port:

8080

spring:

name: cmtt-gateway

desc: 系統中心配置

feign:

hystrix:

enabled:

true

#feginclient 熔斷超時配置

hystrix:

command:

default

: execution:

isolation:

thread:

timeoutinmilliseconds:

60000

#ribbon超時和重試配置【重試次數=maxautoretries + maxautoretriesnextserver + (maxautoretries *maxautoretriesnextserver)】

# 熔斷時間與ribbon超時關係:

# 重試時間 =(maxautoretries+maxautoretriesnextserver+maxautoretriesnextserver*maxautoretries)*readtimeout+網路響應時間

# 重試時間

ribbon:

oktoretryonalloperations:

false

#是否對所有請求進行重試

maxautoretries:

0#對當前例項的重試次數,預設0

maxautoretriesnextserver:

0#對切換例項的重試次數,預設1

readtimeout:

60000

#負載均衡超時時間,預設值5000

connecttimeout:

60000

#ribbon請求連線的超時時間,預設值2000

zuul:

host:

socket-timeout-millis: 88000

connect-timeout-millis: 88000

routes:

auth:

path: /biz/sys/*

* serviceid: cmtt-biz-sys

sensitive-headers: access-control-allow-origin

pmis:

path: /biz/pmis/**

serviceid: cmtt-biz-project

sensitive-headers: access-control-allow-origin

fms:

path: /biz/fms/**

serviceid: cmtt-biz-fms

ratelimit:

key-prefix: springcloud-book #按粒度拆分的臨時變數key字首

enabled: true #啟用開關

repository: in_memory #key儲存型別,預設是in_memory本地記憶體,此外還有多種形式

behind-proxy: true #表示**之後

default-policy: #全侷限流策略,可單獨細化到服務粒度

limit: 2 #在乙個單位時間視窗的請求數量

quota: 1 #在乙個單位時間視窗的請求時間限制

refresh-interval: 3 #單位時間視窗

type:

- user #可指定使用者粒度

- origin #可指定客戶端位址粒度

- url #可指定url粒度

policies:

cmtt-biz-sys:

limit: 5

quota: 5

efresh-interval: 10

policies 配置,含義是我們對 client-a 服務進行特殊限流配置,10秒內請求數量不得大於 5 次,這 5 次請求總時長不能大於 5秒,其他服務對限流策略還是按照 上面預設的,不衝突

最後啟動測試,10秒內訪問第六次就報錯

springcloud zuul 路由配置

自定義微服務的訪問路徑 配置zuul.routes.指定微服務的serviceid 指定路徑即可。例如 zuul routes microservice provider user user 這樣設定,microservice provider user微服務就會被對映到 user 路徑。忽略指定微...

Spring Cloud zuul 負載均衡

eureka的pom檔案 org.springframework.cloud spring cloud starter eureka server org.springframework.boot spring boot starter security org.springframework.bo...

Spring Cloud Zuul許可權整合

由於zuul對請求 全程的可控性,我們可以在 requestcontext的基礎上做任何事情,設定乙個執行順序靠前的filter,就可專門 用於對請求特定內容做許可權認證。這種方式的優點是實現靈活度高,可整合已有許可權 系統,對原始系統微服務化特別友好 缺點是需要開發 一套新的邏輯,維護增加成本,而...