openfeign配置引數筆記

2021-10-06 21:35:30 字數 2326 閱讀 9671

openfeign超時時長設定及詳解

概念明確:

1 hystrix可配置的部分

hystrix.command.default.execution.timeout.enable=true //為false則超時控制有ribbon控制,為true則hystrix超時和ribbon超時都是用,但是誰小誰生效,預設為true

hystrix.command.default.execution.isolation.thread.timeoutinmilliseconds=3000//熔斷器的超時時長預設1秒,最常修改的引數

circuitbreaker.requestvolumethreshold=20 //觸發熔斷的最小請求次數,預設為20

circuitbreaker.sleepwindowinmilliseconds=5000 //休眠時長,預設為5秒

circuitbreaker.errorthresholdpercentage=50 //觸發熔斷的失敗請求最小佔比,預設50%

2 ribbon的可配置部分

ribbon.readtimeout=1000 //處理請求的超時時間,預設為1秒

ribbon.connecttimeout=1000 //連線建立的超時時長,預設1秒

ribbon.maxautoretries=1 //同一臺例項的最大重試次數,但是不包括首次呼叫,預設為1次

ribbon.maxautoretriesnextserver=0 //重試負載均衡其他例項的最大重試次數,不包括首次呼叫,預設為0次

ribbon.oktoretryonalloperations=false //是否對所有操作都重試,預設false

3 feign的可配置部分

feign.hystrix.enabled=false //feign是否啟用斷路器,預設為false

feign.client.config.default.connecttimeout=10000 //feign的連線建立超時時間,預設為10秒

feign.client.config.default.readtimeout=60000 //feign的請求處理超時時間,預設為60

feign.client.config.default.retryer=feign.retryer.default //feign使用預設的超時配置,在該類原始碼中可見,預設單次請求最大時長1秒,重試5次

另外以上各種超時配置,如果都存在,則時間小的配置生效

好的,現在來說feign的超時時長設定:

1 feign的預設配置,是不啟用hystrix,並且feign的底層是呼叫ribbon來實現負載均衡的,所以為了不和ribbon的重試機制衝突因此也不會啟用重試機制

因此配置feign是必須要做的就是

feign.hystrix.enabled=true //開啟feign的hystrix,這樣配置檔案中的hystrix的配置才會生效,否則依然是預設的規則

之後設定hystrix的相關配置才可以在feign中生效,因為feign也呼叫了hystrix

2 ribbon和hystrix的配置

因為hystrix的超時時長,預設為1秒,太短了!因此我們一般一定會設定hystrix的超時時長

在上面啟用了feign的hystrix開關後,配置hystrix超時時長

execution.isolation.thread.timeoutinmilliseconds=10000 //這裡設定了10秒

然後看ribbon的超時設定:

ribbon的超時設定無非2個:處理超時和連線超時,預設為1秒和1秒

但是,ribbon是有預設重試的,也是2個:統一例項的重試次數和負載均衡的不同例項的重試次數,預設為1次和0次

也就是說,在同乙個例項上建立連線如果失敗可以重試1次,處理請求如果失敗可以重試1次,但是不包括首次呼叫,即:實際ribbon的超時時間是 1秒×2+1秒×2,即4秒

之後是,但是上面設定了hystrix超時為10秒,因此ribbon超時優先生效

最後是1個是否對所有操作重試的開關,預設為false,這裡解釋下什麼是所有操作:

即:為false是,get請求不論是連線失敗還是處理失敗都會重試,而對於非get請求只對連線失敗進行重試

因此得出結論,在使用了feign的情況下需先開啟斷路器支援,之後配置hystrix的timeoutinmillisecond大於ribbon的 ( connecttimeout + readtimeout ) × 2即可

也就是說以後以後的配置中常用的配置項就是

1 開啟feign的hystrix開關

2 hystrix超時時長

3 配置ribbon的connecttimeout時長

4 配置ribbon的readtimeout 時長

專案中Zookeeper配置引數筆記

zookeeper是以fast paxos演算法為基礎的,paxos 演算法存在 活鎖的問題,即當有多個proposer交錯提交時,有可能互相排斥導致沒有乙個proposer能提交成功,而fast paxos作了一些優化,通過選舉產生乙個leader 領導者 只有leader才能提交proposer...

make 命令引數筆記

原文 在centos 5下安裝軟體遇到的問題,google了一圈,是因為系統沒有安裝編譯器,那安裝就是了,嘿嘿。解決辦法,在ssh下輸入下面的命令yum y install gcc automake autoconf libtool make b 忽略相容性 b 無條件make所有目標 c dir或...

make 命令引數筆記

b 忽略相容性 b 無條件make所有目標 c dir或者 directory dir 在讀取makefile檔案前,先切換到 dir 目錄下,即把dir當作為當前目錄。如果存在多個 c選項,make的最終當前目錄是第乙個目錄的相對路徑,如 make c home root c src 等價於 ma...