【面試普通人VS高手系列】Dubbo的服務請求失敗怎麼處理?

跟著Mic學架構發表於2022-04-18

今天分享的面試題,幾乎是90%以上的網際網路公司都會問到的問題。
“Dubbo的服務請求失敗怎麼處理”?
對於這個問題,我們來看一下普通人和高手的回答。

普通人:

嗯… 我記得, Dubbo請求處理失敗以後,好像是會重試。 嗯!

高手:

Dubbo是一個RPC框架,它為我們的應用提供了遠端通訊能力的封裝,同時,Dubbo在RPC通訊的基礎上,逐步在向一個生態在演進,它涵蓋了服務註冊、動態路由、容錯、服務降級、負載均衡等能力,基本上在微服務架構下面臨的問題,Dubbo都可以解決。

而對於Dubbo服務請求失敗的場景,預設提供了重試的容錯機制,也就是說,如果基於Dubbo進行服務間通訊出現異常,服務消費者會對服務提供者叢集中其他的節點發起重試,確保這次請求成功,預設的額外重試次數是2次。

除此之外,Dubbo還提供了更多的容錯策略,我們可以根據不同的業務場景來進行選擇。

  1. 快速失敗策略,服務消費者只發起一次請求,如果請求失敗,就直接把錯誤丟擲去。這種比較適合在非冪等性場景中使用
  2. 失敗安全策略,如果出現服務通訊異常,直接把這個異常吞掉不做任何處理
  3. 失敗自動恢復策略,後臺記錄失敗請求,然後通過定時任務來對這個失敗的請求進行重發。
  4. 並行呼叫多個服務策略,就是把這個訊息廣播給服務提供者叢集,只要有任何一個節點返回,就表示請求執行成功。
  5. 廣播呼叫策略,逐個呼叫服務提供者叢集,只要叢集中任何一個節點出現異常,就表示本次請求失敗

要注意的是,預設基於重試策略的容錯機制中,需要注意冪等性的處理,否則在事務型的操作中,容易出現多次資料變更的問題。

以上就是我對這個問題的理解!

總結

這類的問題,並不需要去花太多時間去背,如果你對於整個技術體系有一定的瞭解,你就很容易想象到最基本的處理方式。

即便是你對Dubbo不熟悉,也能回答一兩種!

OK,本期的普通人VS高手面試系列就到這裡結束了,喜歡的朋友記得點贊收藏。

另外,我也陸續收到了很多小夥伴的面試題,我會在後續的內容中逐步更新給到大家!

我是Mic,一個工作了14年的Java程式設計師,我們們下篇文章再見。

相關文章