feign 基礎使用及配置(2)

2021-10-07 14:39:37 字數 1910 閱讀 9485

問題:專案中有需求是不使用熔斷機制的,例如退款請求;熔斷的禁用可以有以下幾種方式:

關閉熔斷配置,這個配置就導致整個模組全部不可用

feign:

hystrix:

enabled: false

fallback/fallbackfactory 注釋掉:這個方法會丟擲 no fallback for hystrixcommand 異常 ,不是好的選擇

官方的區域性禁用

@configuration

public class feigndisablehystrixconfiguration

}

專案裡面這個禁用導致了所有的模組的熔斷禁用,原因是這個類放在了基礎模組裡,並且放在了啟動類可以掃瞄的包下面了。

解決方法

像下面這樣用就可以了

@feignclient(name = "promotion-resource", url = "",fallbackfactory = orderpromotionfallback.class,

configuration= disablehystrixconfiguration.class)

public inte***ce orderpromotionservice

hystrix官方的配置說明

在網上找了很多對熔斷的執行緒池的配置,剛開始複製著配置,測試的時候發現並沒有頭緒,不知道怎麼去對比,執行緒池這一塊的東西也搞混了。這才去看的官方文件,仔細的閱讀了一遍配置資訊,基本了解了一些。

feignautoconfiguration
優化1:

enabled: truefeign中支援三種http請求:jdk原生的http, okhttpclient,apache 的httpclient,feign中預設使用的是jdk原生的http請求不支援連線池的配置  ,其他兩個可以。這裡我們用httpclient

優化2:

hystrix的連線池配置

hystrix:

command:

default:

execution:

isolation:

thread:

timeoutinmilliseconds: 5000

threadpool:

default:

coresize: 20

maxqueuesize: 500

queuesizerejectionthreshold: 500

coresize: 20  #併發執行的核心執行緒數,預設10

maxqueuesize: 500 #blockingqueue的最大佇列數 預設-1

queuesizerejectionthreshold: 500 #即使maxqueuesize沒有達到,達到queuesizerejectionthreshold該值後,請求也會被拒絕

執行緒數=每秒最大請求量*99%延遲時間(秒) + 快取值(some breathing room)

延遲時間:我這邊請教了前輩,是系統之間或微服務之間的響應時間(amy在10:20給我發訊息,我在10:30才看到,這個時間段)

maxqueuesize: 預設-1,不設定這個屬性 併發量大的時候會出現錯誤

queuesizerejectionthreshold: 佇列大小的拒絕閾值,預設值5 ,當maxqueuesize是-1時沒有作用,所以要配合使用;但是排隊數量達到屬性最大值,會直接拒絕,即使maxqueuesize的值沒有達到

注:需要結合系統的實際情況來配置,也做了大量的效能測試,目前我們的系統這些配置是足夠的;還有很多配置在官方文件可以找到

git配置及基礎使用

該文章以收錄 git探索之路 目錄 git探索之路 常用命令總結 git探索之路 配置及基礎使用 git探索之路 版本認識及操作 git探索之路 分支與標籤 git探索之路 解決衝突與團隊合作 git探索之路 標籤管理 git探索之路 配置與自定義 前言 今天我來講解一下git的基礎用法,很簡單,g...

Django框架使用及基礎配置

3 配置環境變數 將c python33 lib site packages django c python33 scripts 兩個環境變數新增入path中,新增完成後就可以使用django的django admin命令新建工程了 4 新建django工程 django admin startpr...

vim ctags cscope配置及使用

windows下流行的原始碼閱讀軟體是source insight,而linux則沒有與其可匹敵圖形化的原始碼閱讀軟體,現在日趨流行的eclipse開發軟體,雖然可以較好的支援原始碼中符號之間相互跳轉,但總體感覺不是十分強大和好用,可能因為eclipse是通過cdt外掛程式的形式來支援c c 專案,...