今天分享的面試題,幾乎是90%以上的網際網路公司都會問到的問題。
“Dubbo的服務請求失敗怎麼處理”?
對於這個問題,我們來看一下普通人和高手的回答。
普通人:
嗯… 我記得, Dubbo請求處理失敗以後,好像是會重試。 嗯!
高手:
Dubbo是一個RPC框架,它為我們的應用提供了遠端通訊能力的封裝,同時,Dubbo在RPC通訊的基礎上,逐步在向一個生態在演進,它涵蓋了服務註冊、動態路由、容錯、服務降級、負載均衡等能力,基本上在微服務架構下面臨的問題,Dubbo都可以解決。
而對於Dubbo服務請求失敗的場景,預設提供了重試的容錯機制,也就是說,如果基於Dubbo進行服務間通訊出現異常,服務消費者會對服務提供者叢集中其他的節點發起重試,確保這次請求成功,預設的額外重試次數是2次。
除此之外,Dubbo還提供了更多的容錯策略,我們可以根據不同的業務場景來進行選擇。
- 快速失敗策略,服務消費者只發起一次請求,如果請求失敗,就直接把錯誤丟擲去。這種比較適合在非冪等性場景中使用
- 失敗安全策略,如果出現服務通訊異常,直接把這個異常吞掉不做任何處理
- 失敗自動恢復策略,後臺記錄失敗請求,然後通過定時任務來對這個失敗的請求進行重發。
- 並行呼叫多個服務策略,就是把這個訊息廣播給服務提供者叢集,只要有任何一個節點返回,就表示請求執行成功。
- 廣播呼叫策略,逐個呼叫服務提供者叢集,只要叢集中任何一個節點出現異常,就表示本次請求失敗
要注意的是,預設基於重試策略的容錯機制中,需要注意冪等性的處理,否則在事務型的操作中,容易出現多次資料變更的問題。
以上就是我對這個問題的理解!
總結
這類的問題,並不需要去花太多時間去背,如果你對於整個技術體系有一定的瞭解,你就很容易想象到最基本的處理方式。
即便是你對Dubbo不熟悉,也能回答一兩種!
OK,本期的普通人VS高手面試系列就到這裡結束了,喜歡的朋友記得點贊收藏。
另外,我也陸續收到了很多小夥伴的面試題,我會在後續的內容中逐步更新給到大家!
我是Mic,一個工作了14年的Java程式設計師,我們們下篇文章再見。