dubbo超時重試和服務降級

2021-09-10 19:39:18 字數 971 閱讀 3659

超時是針對消費端還是服務端?

dubbo的超時是針對客戶端的

超時的實現原理是什麼?

dubbo預設採用了netty做為網路元件,它屬於一種nio的模式。消費端發起遠端請求後,執行緒不會阻塞等待服務端的返回,而是馬上得到乙個responsefuture,消費端通過不斷的輪詢機制判斷結果是否有返回。因為是通過輪詢,輪詢有個需要特別注要的就是避免死迴圈,所以為了解決這個問題就引入了超時機制,只在一定時間範圍內做輪詢,如果超時時間就返回超時異常。實現**在defaultfuture中的get方法中。

public object get(int timeout) throws remotingexception 

if (! isdone())

}} catch (interruptedexception e) finally

if (! isdone())

}return returnfromresponse();

}

超時解決的是什麼問題?

當前端大量請求併發出現時,很有可以將業務執行緒池中的執行緒消費完,因為預設預設的執行緒池是固定大小,對呼叫的服務設定超時時間,是為了避免因為某種原因導致執行緒被長時間占用,最終出現執行緒池用完返回拒絕服務的異常。

超時與服務降級

發生超時異常時,進而導致整個獲取產品明細的介面異常,這也就是平常說的強依賴。這類強依賴是超時不能解決的,解決方案一般是兩種:

呼叫時做異常捕獲,返回空值或者返回具體的錯誤碼,消費端根據不同的錯誤碼做不同的處理。

呼叫做服務降級,比如發生異常時返回乙個mock的資料,dubbo預設支援mock。

只有通過做異常捕獲或者服務降級才能確保某些不重要的依賴出問題時不影響主服務的穩定性。而超時就可以與服務降級結合起來用。

超時重試可能會導致伺服器雪崩。

dubbo集群容錯和服務降級

集群容錯 什麼是容錯機制?容錯機制指的是系統在一定範圍內允許或包容犯錯情況的發生。舉個簡單例子,我們在電腦上執行乙個程式,有時候會出現無響應的情況,然後系統會彈出乙個提示框讓我們選擇,是立即結束還是繼續等待,然後根據我們的選擇執行對應的操作,這就是 容錯 在分布式架構下,網路 硬體 應用都可能發生故...

Springcloud 服務熔斷和服務降級配置

服務熔斷 概念 微服務中,熔斷機制是應對雪崩效應的一種微服務鏈路保護機制。當扇出鏈路的某個微服務不可用或者響應時間太長時,會進行服務降級,進而熔斷該節點微服務的呼叫,快速返回 錯誤 的響應資訊。當檢測到該節點微服務呼叫響應正常後恢復呼叫鏈路。服務熔斷的作用類似於我們家用的保險絲,當某服務出現不可用或...

Hystrix服務熔斷和服務降級的簡單使用

服務熔斷機制是對應服務雪崩的一種微服務鏈路保護機制。在鏈路請求中,如果某個微服務節點不可用或者響應時間太長,可以熔斷該節點的微服務呼叫,快速的返回錯誤的響應資訊,當恢復正常後可正常呼叫。具體配置過程 配置在 服務端 被動觸發 1 依賴 org.springframework.cloudgroupid...