最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

后端面試題(一):什么是 Dubbo?它有哪些核心功能?

2023-04-11 21:02 作者:我有一個壞前桌  | 我要投稿

普通人

Dubbo 是以高性能 RPC 框架,它提供了分布式架構(gòu)下的服務之間通信方案,使 得開發(fā)者可以不需要關(guān)心網(wǎng)絡通信的細節(jié)。通過該框架可以使得遠程服務調(diào)用方 式和本地服務調(diào)用方式一樣簡單


高手

Dubbo 是一款高性能、輕量級的開源 RPC 框架。由 10 層模式構(gòu)成,整個分層 依賴由上至下。 通過這張圖我們也可以將 Dubbo 理解為三層模式:


  • 第一層的 Business 業(yè)務邏輯層由我們自己來提供接口和實現(xiàn)還有一些配置信息。

  • 第二層的 RPC 調(diào)用的核心層負責封裝和實現(xiàn)整個 RPC 的調(diào)用過程、負載均衡、 集群容錯、代理等核心功能。?


Remoting 則是對網(wǎng)絡傳輸協(xié)議和數(shù)據(jù)轉(zhuǎn)換的封裝。?

?Dubbo 官方文檔的介紹,Dubbo 提供了六大核心能力?

  1. 面向接口代理的高性能 RPC 調(diào)用。

  2. 智能容錯和負載均衡。

  3. 服務自動注冊和發(fā)現(xiàn)。?

  4. 高度可擴展能力。?

  5. 運行期流量調(diào)度。?

  6. 可視化的服務治理與運維。


面試官:既然說到 Dubbo 的功能,請詳細說說 Dubbo 負載均衡的幾種策略?

高手:

Dubbo 有五種負載策略:?

第一種是加權(quán)隨機:假設(shè)我們有一組服務器 servers = [A, B, C],他們對應的權(quán) 重為 weights = [5, 3, 2],權(quán)重總和為 10?,F(xiàn)在把這些權(quán)重值平鋪在一維坐標值 上,[0, 5) 區(qū)間屬于服務器 A,[5, 8) 區(qū)間屬于服務器 B,[8, 10) 區(qū)間屬于服 務器 C

接下來通過隨機數(shù)生成器生成一個范圍在 [0, 10) 之間的隨機數(shù),然后 計算這個隨機數(shù)會落到哪個區(qū)間上就可以了。?

第二種是最小活躍數(shù):每個服務提供者對應一個活躍數(shù) active,初始情況下, 所有服務提供者活躍數(shù)均為 0。

每收到一個請求,活躍數(shù)加 1,完成請求后則將 活躍數(shù)減 1。

在服務運行一段時間后,性能好的服務提供者處理請求的速度更快, 因此活躍數(shù)下降的也越快,此時這樣的服務提供者能夠優(yōu)先獲取到新的服務請求。


第三種是一致性 hash:通過 hash 算法,把 provider invoke 和隨機節(jié)點生成 hash,并將這個 hash 投射到 [0, 2^32 - 1] 的圓環(huán)上,查詢的時候根據(jù) key md5 然后進行 hash,得到第一個節(jié)點的值大于等于當前 hash invoker。?


第四種是加權(quán)輪詢:比如服務器 A、BC 權(quán)重比為 5:2:1,那么在 8 次請求中, 服務器 A 將收到其中的 5 次請求,服務器 B 會收到其中的 2 次請求,服務器 C 則收到其中的 1 次請求。

?

第五種是最短響應時間權(quán)重隨機: 計算目標服務的請求的響應時間,根據(jù)響應 時間最短的服務,配置更高的權(quán)重進行隨機訪問。


面試官:Dubbo 的工作原理是什么樣的??

高手:

1.服務啟動的時候,provider consumer 根據(jù)配置信息,連接到注冊中心 register,分別向注冊中心注冊和訂閱服務?

2.register 根據(jù)服務訂閱關(guān)系,返回 provider 信息到 consumer,同時 consumer 會把 provider 信息緩存到本地。如果信息有變更,consumer 會收到來自 register 的推送?

3.consumer 生成代理對象,同時根據(jù)負載均衡策略,選擇一臺 provider,同時 定時向 monitor 記錄接口的調(diào)用次數(shù)和時間信息?

4.拿到代理對象之后,consumer 通過代理對象發(fā)起接口調(diào)用?

5.provider 收到請求后對數(shù)據(jù)進行反序列化,然后通過代理調(diào)用具體的接口實現(xiàn) 面試官:最后在說說 Dubbo Spring Cloud 的區(qū)別吧!

Dubbo SOA 時代的產(chǎn)物,它的關(guān)注點主要在于服務的調(diào)用,流量分發(fā)、流 量監(jiān)控和熔斷。而 Spring Cloud 誕生于微服務架構(gòu)時代,考慮的是微服務治理 的方方面面,另外由于依托了 Spirng、Spirng Boot 的優(yōu)勢之上,兩個框架在 開始目標就不一致,Dubbo 定位服務治理、Spirng Cloud 是一個生態(tài)。

兩者最大的區(qū)別是 Dubbo 底層是使用 Netty 這樣的 NIO 框架,是基于 TCP 協(xié)議傳輸?shù)?,配合?Hession 序列化完成 RPC 通信。而 SpringCloud 是基 Http 協(xié)議+Rest 接口調(diào)用遠程過程的通信,相對來說,Http 請求會有更大 的報文,占的帶寬也會更多。但是 REST 相比 RPC 更為靈活,服務提供方和調(diào) 用方的依賴只依靠一紙契約,不存在代碼級別的強依賴。

后端面試題(一):什么是 Dubbo?它有哪些核心功能?的評論 (共 條)

分享到微博請遵守國家法律
富阳市| 额尔古纳市| 河北省| 濉溪县| 慈溪市| 威信县| 交城县| 容城县| 黄大仙区| 阜平县| 博野县| 三原县| 长子县| 青岛市| 长沙市| 上蔡县| 横山县| 进贤县| 遵义县| 霍林郭勒市| 保山市| 中江县| 社旗县| 永吉县| 蛟河市| 沛县| 定南县| 平山县| 固始县| 府谷县| 万年县| 体育| 西青区| 宜兰市| 格尔木市| 吴旗县| 大足县| 福清市| 城步| 永善县| 朔州市|