面試官:Dubbo怎麼實現服務降級,他有什麼好處?

曠世奇才927 發表於 2022-06-02
面試 Dubbo

哈嘍!大家好,我是小奇,一位熱愛分享的程式設計師
小奇打算以輕鬆幽默的對話方式來分享一些技術,如果你覺得通過小奇的文章學到了東西,那就給小奇一個贊吧
文章持續更新

一、前言

書接上回,今天週一了,招聘軟體上的公司又開始蠢蠢欲動了。各種各樣的用工方式,駐場、勞務派遣、專案外包等讓人眼花繚亂,稍有不慎就落入了公司的“圈套”,各位還是要擦亮雙眼啊。

老樣子,還是先看看某直聘上的最新發布,挑挑揀揀,最後選了十幾家投了簡歷,然後就靜候佳音吧,趁這功夫去村裡黑網咖玩會。

在這裡插入圖片描述

沒想到週一也這麼多人,這些小孩估計是逃學來的吧,看我不把他們轟走。

我:喂,小屁孩,知道我是誰嗎?

小屁孩:哎呦,這不是奇哥嘛,大哥今天也逃學了啊。

我:逃什麼學,老子早畢業了。

小屁孩:唉,被學校開除就說開除了,還說什麼畢業了。

我:滾蛋,老子有畢業證。

小屁孩:畢業證多少錢啊。

我:兩千!!!

小屁孩:哈哈哈。。。

在這裡插入圖片描述

我:別給我扯這沒用的,趕緊換地圖,玩我最熟悉的守望之城,我可是狙神奇哥。

正在我十幾連殺的時候突然我的手機響了,誰呀這麼不會挑時候。

我:“喂您好”。

對面:“您好,請問是小奇嗎”。

我:“是我,你是?”。

對面:“我是XXX公司的,我看到hr推給我你的簡歷,我感覺還不錯,你什麼時候方便來現場面試一下”。

我:“現在不方便現場面試了”。

對面:“好吧,那你現在方便嗎?我們現線上上面試一下吧”。

我:“好的”。

二、面試

面試官:我看你簡歷上寫的精通Dubbo,那你能說一下Dubbo怎麼可以實現服務降級嗎?

我:Dubbo可以向註冊中心寫入動態配置覆蓋規則來實現服務降級。

RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181"));
registry.register(URL.valueOf("override://0.0.0.0/com.foo.BarService?category=configurators&dynamic=false&application=foo&mock=force:return+null"));

在這裡我們可以看到後面程式碼最後面有一個mock=force:return+null,這個就是用來定義降級後的返回策略的。其中:

mock=force:return+null 表示消費方對該服務的方法呼叫直接返回 null 值,不發起遠端呼叫。這樣的話讓我們配置了這個策略後,我們消費者呼叫這個服務者直接就返回null了,這個服務掛掉也沒有關係了。

mock=fail:return+null 表示消費方對該服務的方法呼叫在失敗後,再返回 null 值,不拋異常,這樣的話我們消費者在呼叫這個服務端的時候會等待服務端的響應,如果呼叫失敗後,就會返回消費者null值,這個如果呼叫成功的話就正常返回,這裡還是比較靈活的。

面試官:嗯,Dubbo為什麼要實現服務降級?

我:因為我們一個系統會有核心業務流程,和非核心業務流程。

例如一個網購的系統,在高峰期間壓力劇增,這個時候如果一個非核心業務流程服務出現問題,那麼核心的業務流程可能在遠端呼叫非核心服務時出現問題,這樣就造成核心流程服務也收到影響。

所以如果在高峰期壓力大的情況下, 如果非核心服務出現問題,我們可以使用服務降級策略,使得不可用的服務就不會再呼叫,直接讓他返回null值,不影響我們核心業務流程就好了。

面試官:“小夥子不錯呀,什麼時候能回北京入職呢”

我:“額。。。等等吧,現在還有好多家公司等著談薪資呢,我得挑一家合適的。”

面試官:“你要多少我都給你,來我這吧”

我:“額。。。那就月薪100個W吧”。

面試官:“喂,你說什麼我聽不見,訊號不好。。。”

我:“喂喂喂”(嘟嘟嘟嘟嘟嘟嘟嘟。。。)。

三、總結

這裡的相關內容還沒有整理完畢,文章後面持續更新,建議收藏。

文章中涉及到的命令大家一定要像我一樣每個都敲幾遍,只有在敲的過程中才能發現自己對命令是否真正的掌握了。

如果覺得我的文章還不錯的話就點個贊吧