專案中因為dubbo的重試機制產生重複資料問題記錄

2021-10-09 17:59:20 字數 302 閱讀 4310

問題描述:

通過多次測試,發現service的執行時間超過dubbo配置的最大時間之後,

會進行重試,預設繼續重試2次。debug發現,controller雖然只會進一次,但是只要dubbo呼叫超時,就會被呼叫2次service。

解決:1、系統做冪等性處理

2、如果系統不做冪等,可以考慮把當前service的重試次數改為-1,這樣超時就不會繼續重試。

3、另一種方式,優化業務邏輯,比如service呼叫時間超過20分鐘,可以考慮給資料庫加索引加快查詢等速度。這種方式相當於保留了重試機制,讓系統不再出現超時的情況。

Dubbo的超時重試機制

我們在使用dubbo的過程中一定對於下面的配置十分熟悉 下面來解釋一下各引數的含義 1.timeout 3000 服務呼叫的超時時間,呼叫服務的過程中如果達到3秒就會報超時異常,超時異常後客戶端會進行嘗試設定的 retries 次呼叫。有乙個需要注意的地方,timeout只有在超時異常才有效,如果是...

Dubbo高可用 重試機制

dubbo 服務在嘗試呼叫一次之後,如出現非業務異常 服務突然不可用 超時等 dubbo 缺省會進行額外的最多2次重試。重試次數支援兩種自定義配置 1.通過註解 xml進行固定配置 2.通過上下文進行執行時動態配置。1 通過註解 xml進行固定配置 2 通過rpccontext進行執行時動態配置,優...

dubbo重試機制原理 Dubbo超時和重連機制

dubbo啟動時預設有重試機制和超時機制。超時機制的規則是如果在一定的時間內,provider沒有返回,則認為本次呼叫失敗,重試機制在出現呼叫失敗時,會再次呼叫。如果在配置的呼叫次數內都失敗,則認為此次請求異常,丟擲異常。如果出現超時,通常是業務處理太慢,可在服務提供方執行 jstack pid j...