面試官:Dubbo是什麼,他有什麼特性?
哈嘍!大家好,我是小奇,一位熱愛分享的程式設計師
小奇打算以輕鬆幽默的對話方式來分享一些技術,如果你覺得通過小奇的文章學到了東西,那就給小奇一個贊吧
文章持續更新
一、前言
書接上回,今天還是過周末,雖然不上班,但是周末得正常過呀,今天依舊躺在我家祖傳的土炕上躺平。
哎,啥時候能老婆孩子熱炕頭啊,現在自己睡覺怪冷的(還得添把柴)。。。
算了,不想這有的沒的了,一切隨緣吧,是在不行就讓劉嬸給我說媒。。。先燒火做飯吧
就在我燒火的時候我的手機突然響了。
我:「喂您好」。
對面:「您好,請問是小奇嗎」。
我:「是我,你是?」。
對面:「我是XXX公司的,我看到hr推給我你的簡歷,我感覺還不錯,你什麼時候方便來現場面試一下」。
我:「現在不方便現場面試了」。
對面:「好吧,那你現在方便嗎?我們現在線上面試一下吧」。
我:「好的」。
二、面試
面試官:我看你簡歷上寫的精通Dubbo,那你能說一下Dubbo是什麼嗎?
我:Dubbo最開始是一款RPC框架,隨著功能越來越完善,現在Dubbo是一款Java服務框架。
面試官:嗯,既然你說到了RPC,那麼他是什麼呢?
我:RPC是遠程過程調用,RPC同時也是一種電腦通訊協議,他可以從A機器調用B機器的程式,調用的時候就類似於調用本地程式一樣方便。
面試官:嗯,那你說一下Dubbo都有哪些特性吧?
Dubbo具有負載均衡、服務超時處理、集群容錯、服務降級、本地存根、本地偽裝、參數回調、非同步調用等特性。
面試官:嗯,那你說一下Dubbo的負載均衡是怎麼實現的吧?
我:在Dubbo中,消費者調用服務者的時候會記錄服務者的active,比如現在有一個消費者,有A、B兩個服務者。
當消費者向A服務發送一條消息的時候,消費者自身會記錄A服務的active會加1,當消費者接收到服務者A的相應結果後會將A服務的active減1。
而在消費者選擇使用哪個服務者的時候正是根據每個服務者active的大小來判斷的,首先選擇active小的來調用。
面試官:嗯,那你說一下Dubbo服務超時怎麼設置吧,有什麼要注意的嗎?
Dubbo可以在消費者和服務端都設置超時時間,消費者的超時時間是消費者發出消息後到消費者接收到消息的時間。
服務端的超時時間是服務端接收消息後到處理完畢後發出的時間。
需要注意的是消費端的時間盡量設置的要比服務端的時間要長,因為如果消費端設置的是2秒,服務端設置的是5秒,而服務執行就需要3秒,那麼消費端肯定是超時了,但是這個時候服務端並沒有超時,不會發生異常。
面試官:嗯,那你說一下Dubbo的集群容錯吧?
集群容錯是服務端有多個提供者,他們構成集群,當消費者調用服務端的時候服務端通過負載均衡策略選出一個提供者來提供服務,當調用這個服務者發生錯誤的時候,Dubbo後續採取了一系列策略。
Dubbo提供了多種集群容錯模式。
Failover Cluster:失敗自動切換,當出現失敗,重試其它伺服器。通常用於讀操作,但重試會帶來更長延遲。可通過 retries=”2″ 來設置重試次數(不含第一次)。
Failfast Cluster:快速失敗,只發起一次調用,失敗立即報錯。通常用於非冪等性的寫操作,比如新增記錄。
Failsafe Cluster :失敗安全,出現異常時,直接忽略。通常用於寫入審計日誌等操作。
Failback Cluster:失敗自動恢復,後台記錄失敗請求,定時重發。通常用於消息通知操作。
Forking Cluster:並行調用多個伺服器,只要一個成功即返回。通常用於實時性要求較高的讀操作,但需要浪費更多服務資源。可通過 forks=”2″ 來設置最大並行數。
Broadcast Cluster:廣播調用所有提供者,逐個調用,任意一台報錯則報錯。通常用於通知所有提供者更新快取或日誌等本地資源資訊。
面試官:「小夥子不錯呀,什麼時候能回北京入職呢」
我:「額。。。等等吧,現在還有好多家公司等著談薪資呢,我得挑一家合適的。」
面試官:「你要多少我都給你,來我這吧」
我:「額。。。那就月薪100個W吧」。
面試官:「喂,你說什麼我聽不見,訊號不好。。。」
我:「喂喂喂」(嘟嘟嘟嘟嘟嘟嘟嘟。。。)。
三、總結
這裡的相關內容還沒有整理完畢,文章後面持續更新,建議收藏。
文章中涉及到的命令大家一定要像我一樣每個都敲幾遍,只有在敲的過程中才能發現自己對命令是否真正的掌握了。
如果覺得我的文章還不錯的話就點個贊吧