Spring Cloud使用Eureka調用接口,超時設置(二)

在 Spring Cloud 微服務架構中,當同時配置了 Ribbon 和 Feign 的超時時間時,Feign 的配置優先級高于 Ribbon。具體規則和底層邏輯如下:

?? 1. 配置優先級規則
  1. Feign 顯式配置 > Ribbon 配置
    若在 Feign 中顯式設置了超時時間(如通過 feign.client.config),則 Feign 的配置會覆蓋 Ribbon 的同名配置。

  2. Feign 未配置時,使用 Ribbon 配置
    若未配置 Feign 超時,則 Ribbon 的配置(如 ribbon.ReadTimeout)生效。

  3. 均未配置時,使用默認值

    Ribbon 默認:連接超時(ConnectTimeout)= 1000ms,讀取超時(ReadTimeout)= 1000ms;

    Feign 默認:連接超時 = 10s,讀取超時 = 60s,但實際會被 Ribbon 默認值覆蓋。

🔧 2. 底層生效邏輯

Feign 的優先級實現
Feign 通過 LoadBalancerFeignClient 類選擇配置:

若檢測到 Feign 自定義了 Request.Options(非默認值),則使用 FeignOptionsClientConfig 包裝 Feign 的超時配置;

若為默認值,則回退到 Ribbon 的 IClientConfig。
關鍵源碼邏輯:

IClientConfig getClientConfig(Request.Options options, String clientName) {if (options == DEFAULT_OPTIONS) {return this.clientFactory.getClientConfig(clientName); // 使用Ribbon配置} else {return new FeignOptionsClientConfig(options); // 使用Feign配置}
}
?? 3. 配置示例對比
feign:client:config:default:  # 對所有 Feign 客戶端生效connectTimeout: 5000  # 連接超時時間(毫秒)readTimeout: 10000     # 讀取超時時間(毫秒)#ribbon的超時時間
ribbon:ReadTimeout: 25000ConnectTimeout: 25000
? 4. 與 Hystrix 的協作

若同時使用 Hystrix 熔斷,需注意:

Hystrix 超時時間必須大于 Feign/Ribbon 超時時間
否則請求可能被 Hystrix 熔斷(默認 1s),未等到 Feign/Ribbon 完成調用。
示例配置:
#hystrix的超時時間
hystrix:command:default:execution:timeout:enabled: trueisolation:thread:timeoutInMilliseconds: 30000
📊 5. 重試機制的影響

若啟用 Ribbon 重試(如 MaxAutoRetries),總耗時可能疊加:

總最大耗時 = (1 + MaxAutoRetries) × (ConnectTimeout + ReadTimeout)

此時需確保 Hystrix 超時 > 總最大耗時,否則重試未完成即觸發熔斷。

💎 總結:配置優先級與建議

場景 ??????? ? 生效配置?????建議操作
Feign 顯式配置超時?? Feign ??????優先使用 Feign 的細粒度控制(如按服務/方法配置)
僅配置 Ribbon超時?? Ribbon ??????需確保 ribbon.http.client.enabled=true 生效
同時使用 Hystrix??? Hystrix ??????設置 hystrix.timeout > (Feign/Ribbon 超時 + 重試時間)
需要重試機制???? Ribbon????? ?避免同時啟用 Feign 重試(默認關閉),防止多重重試

?? 避坑提示:

若發現超時配置未生效,檢查是否因 Feign 未顯式配置導致實際走了 Ribbon 默認值(1s);

使用配置中心(如 Nacos)動態調整超時需注意:Feign 配置不支持動態刷新,Ribbon 配置可動態生效。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87469.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87469.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87469.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS-SM3加密算法N種集成

近期的一個項目需要用到SM3加密算法,需要在iOS中使用Objective-C實現SM3國密加密算法。 SM3:是中國國家密碼管理局發布的密碼雜湊算法標準,適用于商用密碼應用中的數字簽名和驗證、消息認證碼的生成與驗證以及隨機數的生成等 由于iOS系統并未…

[逆向工程]什么是TEB 與 PEB(二十九)

[逆向工程]什么是TEB 與 PEB(二十九) 一、引言:為什么需要了解 TEB/PEB? 在 Windows 系統開發、調試或逆向工程中,TEB(Thread Environment Block) 和 PEB(Process Environment Block) 是理解程序執行機制的關鍵。它們如同進程與線程的“身份證”,存儲了從內存布局到…

逆向分析貝殼網人機驗證JS加密邏輯

引言 在數據爬取和自動化測試過程中,人機驗證(如滑塊、點選、短信驗證等)是常見的反爬手段。貝殼網(ke.com)作為國內領先的房產平臺,其人機驗證機制較為復雜,涉及前端JS加密、動態Token、行為檢…

Vue3 + Element Plus中el-table加載狀態分析

在 Vue 3 中,當 onMounted 鉤子被觸發時,父組件的 DOM 已經掛載完成,但子組件(如 el-table)可能尚未完成其內部渲染。具體分析如下: 1. onMounted 的執行時機 父組件掛載完成:onMounted 表示當前…

OpenCV圖像拼接技術詳解:從特征匹配到全景合成

本文將詳細介紹如何使用OpenCV實現兩幅圖像的自動拼接,涵蓋特征提取、單應性矩陣計算和圖像融合等關鍵技術。 一、圖像拼接概述 圖像拼接是將多張有重疊區域的圖像合并成一幅全景圖的技術,廣泛應用于全景攝影、衛星圖像處理、醫學影像等領域。其核心技術…

如何通過 5 種方式向 Android 手機添加音樂

想把音樂添加到你的安卓手機,然后隨時隨地無需網絡連接就能欣賞你喜愛的音樂嗎?這不再是麻煩。現在,你可以按照本指南中的有效方法,將音樂添加到你的安卓手機上。讓我們在安卓手機上聆聽我們美妙的歌曲吧。 第 1 部分:…

VS Code 項目中的 .vscode 目錄詳解

VS Code 項目中的 .vscode 目錄詳解 .vscode 目錄是 VS Code 項目的核心配置中心,它包含特定于當前項目的配置,這些配置覆蓋全局設置,確保團隊成員獲得一致的開發環境體驗。 .vscode 目錄中的核心文件 文件名作用是否應納入版本控制settin…

Ubuntu22.04安裝opengauss并配置遠程訪問、JDBC連接

內容概括 最近在研究怎么在ubuntu服務器環境下使用opengauss,看了下官方下載地址沒有適配ubuntu的安裝包。仔細翻了下官方文檔,發現安裝指南里有提供一個deb包安裝方案,有適配ubuntu,經過實踐可行,于是記錄下來給有需要…

國產智能體“雙子星”:實在Agent vs Manus(核心架構與技術實現路徑對比)

2025年,人工智能領域迎來重要轉折點——大模型的光環逐漸消散,落地應用成為行業焦點。 正如業內人士所言:“2023年,大家普遍覺得要買一個大模型,但訓練完了怎么用起來,大家一頭霧水。” 在這一背景下&…

pgAdmin 4 連接 postgreSQL

環境如下: 宿主機為Windows 11postgreSQL安裝在宿主機上的Linux虛機中,Hypervisor是VirtualBoxpgAdmin 4 已安裝在宿主機上 本文講述:如何通過宿主機上的pgAdmin 連接到虛擬機中的PG。 設置監聽 默認的PG監聽主機為localhost,…

HTTP 緩存策略:強緩存與協商緩存的深入解析

在HTTP緩存策略中,強緩存和協商緩存是兩種常用的機制,用于減少數據傳輸和提高網頁加載速度。它們通過在客戶端和服務器之間建立緩存來避免不必要的網絡請求,從而優化性能并提高用戶體驗。本文將詳細介紹這兩種緩存策略的原理、優勢和適用場景…

Node.js 中的 Token 認證機制詳解

文章目錄 Node.js 中的 Token 認證機制詳解1. Token 認證基礎1.1 什么是 Token 認證?1.2 Token 認證流程 2. JWT (JSON Web Token) 實現2.1 安裝依賴2.2 生成 Token2.3 驗證 Token 中間件 3. 完整實現示例3.1 登錄接口3.2 受保護的路由 4. Token 安全最佳實踐5. Tok…

23 - HaLoAttention模塊

論文《Scaling Local Self-Attention for Parameter Efficient Visual Backbones》 1、作用 HaloNet通過引入Haloing機制和高效的注意力實現,在圖像識別任務中達到了最先進的準確性。這些模型通過局部自注意力機制,有效地捕獲像素間的全局交互&#xf…

2025Mybatis最新教程(五)

第5章 ORM映射 5.1 MyBatis自動ORM失效 MyBatis只能自動維護庫表”列名“與”屬性名“相同時的對應關系,二者不同時,無法自動ORM。 自動ORM失效建表 create table t_managers(mgr_id int primary key auto_increment,mgr_name varchar(50),mgr_pwd varchar(50) ); 添加數據…

解決lombok注解失效問題

Lombok 注解失效是 Java 開發中的常見問題,通常由依賴配置、IDE 支持或構建工具設置引起。最近在拉取別人springboot3jdk21版本的項目時遇到了lombok注解失效,導致項目無法啟動的問題,以下是我的解決方案: 首先檢查idea 的lombok…

3分鐘搭建LarkXR實時云渲染PaaS平臺,實現各類3D/XR應用的一鍵推流

LarkXR是由Paraverse平行云自主研發的去中心化實時云渲染平臺,以其卓越的性能和豐富完備的功能插件,引領3D/XR云化行業風向標。LarkXR適用于3D/XR開發者、設計師、終端用戶等創新用戶,可以在零硬件負擔下,輕松實現超高清低時延的3…

vue3 watch監視詳解

watch監視 一 &#xff1a;watch監視{ref}定義的基本類型結構 <template><div class"person"><h1>情況一:watch監視{ref}定義的基本類型結構</h1><h1>當前的和為{{ sum }}</h1><button click"changeSum">點我…

TensorFlow Serving學習筆記2: 模型服務

本文深入剖析 TensorFlow Serving 的核心架構與實現機制&#xff0c;結合源碼分析揭示其如何實現高可用、動態更新的生產級模型服務。 一、TensorFlow Serving 核心架構 1.1 分層架構設計 TensorFlow Serving 采用模塊化分層設計&#xff0c;各組件職責分明&#xff1a; 組件…

共享云桌面為什么能打敗傳統電腦

近年來&#xff0c;隨著云桌面技術的快速發展&#xff0c;共享云桌面作為一種新型的計算模式&#xff0c;正在逐步改變人們的工作和生活方式。它憑借其獨特的優勢&#xff0c;正在逐步取代傳統電腦&#xff0c;成為企業和個人用戶的新選擇。之所以在部分場景中展現出替代傳統電…

B站PWN教程筆記-12

完結撒花。 今天還是以做題為主。 fmtstruaf 格式化字符串USER AFTER FREE 首先補充一個背景知識&#xff0c;指針也是有數據類型的&#xff0c;不同數據類型的指針xx&#xff0c;所加的字節數也不一樣&#xff0c;其實是指針指的項目的下一項。如int a[20]&#xff0c;a是…