首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Dubbo 雙向依賴啟動死鎖:check=false 破環

     編輯:程式設計綜合問答

現象

服務 A 和 B 互相調用,啟動任意一方時 Spring 上下文加載階段檢查依賴可用性,發現對方未啟動,拋出 No provider available,導致雙雙啟動失敗。

解決:消費端關閉啟動檢查

<dubbo:reference id="layoutService" 
    interface="com.ehualu.alarm.interfaces.LayoutInterface" 
    check="false" />

原理

  • check="true"(默認):Spring 初始化時同步檢查註冊中心是否有提供者,無則拋異常阻斷啟動。
  • check="false":延遲檢查至首次調用,允許提供者稍後啟動並註冊。

最佳實踐

  1. 雙向依賴的雙方消費端均設 check="false"。
  2. 生產環境配合註冊中心健康檢查、服務治理儀表盤監控可用性。
  3. 若業務強依賴(調用失敗即報錯),可在業務代碼中首次調用前主動檢查並快速失敗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved