Dubbo高頻面試題

引言

作為分布式服務框架的標桿,Dubbo憑借其高性能RPC通信、靈活的服務治理能力和豐富的容錯機制,成為Java技術棧中微服務領域的核心考點。本文系統梳理Dubbo高頻面試核心知識點,涵蓋容錯策略、負載均衡、注冊中心原理、服務上下線感知等關鍵技術細節,助您深入理解Dubbo設計思想,從容應對分布式服務架構面試挑戰。無論是服務注冊發現流程,還是ZooKeeper節點監聽機制,這里提供清晰的技術脈絡與場景化解析。

Dubbo 容錯策略(調用失敗處理方式)

  1. 默認額外重試2次。
  2. 只請求一次,失敗直接拋異常。
  3. 只請求一次,失敗吞掉異常 不做任何處理。
  4. 記錄失敗請求,后臺定時任務進行重發。
  5. 廣播給服務提供者集群 ,只要有一個節點返回,則成功。
  6. 逐個調用服務提供者集群,只要有一個節點失敗,則失敗。

Dubbo 核心功能

  1. 面向接口的高性能RPC調用。
  2. 服務自動注冊和發現。
  3. 負載均衡策略。
  4. 多樣的容錯策略。
  5. 可視化服務治理和運維。

Dubbo 負載均衡策略

  1. 隨機
  2. 輪詢
  3. 加權隨機
  4. 加權輪詢
  5. 一致性hash
  6. 最小活躍數:當一個新的請求到達時,負載均衡器會檢查所有可用服務實例的活躍請求數,并選擇活躍請求數最少的實例來處理該請求。如果有多個服務實例的活躍請求數相同且都是最少的,負載均衡器會在這些實例中隨機選擇一個來處理請求,以避免所有請求都集中到某一個實例上。

Dubbo 工作流程

  1. 服務啟動后,provider和consumer根據配置信息,連接到注冊中心,分別進行服務注冊和服務訂閱。
  2. 注冊中心根據訂閱關系,將provider信息發送給consumer,consumer會將provider信息緩存再本地。如果信息有變化,consumer會收到注冊中心的消息推送。
  3. 服務調用時,consumer會生成代理對象,根據負載均衡策略,選擇一臺provider進行接口調用,同時定時向monitor發送接口調用次數以及耗時。
  4. provider收到請求后對數據進行反序列化,通過代理對象調用具體接口。

Dubbo 如何感知服務下線?

  1. Dubbo通過ZK來實現服務注冊和發現,通過ZK來維護提供者和消費者的地址。
  2. /dubbo/services/providers和/dubbo/services/consumers節點維護提供者和消費者地址。
  3. ZK通過心跳檢測機制(客戶端主動定期向ZooKeeper服務器發送心跳消息,也稱為Ping請求),判斷Dubbo的服務提供者的運行狀態,來決定是否從服務列表中移除,當出現故障時ZK會剔除這個服務地址。
  4. Dubbo的服務消費端通過Watch機制來對/providers節點進行監控,一旦節點下的子節點發生變化,ZK就會發送事件通知Dubbo的服務消費端,消費端收到后會將變更本地緩存的服務地址。

Dubbo 注冊中心Zookeeper結構

/dubbo└── com.example.DemoService├── providers├── consumers├── configurators└── routers
  1. /dubbo/com.example.DemoService:這個節點是具體的服務接口節點,以服務接口的全限定類名命名。每個服務對應一個這樣的節點。
  2. /dubbo/com.example.DemoService/providers:這個節點下存儲的是所有提供該服務的提供者信息。節點的內容通常是 URL 格式,包含服務提供者的 IP、端口、協議、版本、方法等信息。
  3. /dubbo/com.example.DemoService/consumers:這個節點下存儲的是所有訂閱了該服務的消費者信息。節點內容也是 URL 格式,包含消費者的 IP、端口、應用名、版本、時間戳等信息。

感謝您的閱讀!如果文章中有任何問題或不足之處,歡迎及時指出,您的反饋將幫助我不斷改進與完善。期待與您共同探討技術,共同進步!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81845.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81845.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81845.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

氮氣吹掃電磁閥

一、氮氣吹掃電磁閥的概述 氮氣吹掃電磁閥是一種重要的工業自動控制設備,用于對工業設備中出現的雜質和沉淀物進行清理,以保證生產線的暢通和生產效率的穩定。其作用是在需要吹掃清洗的工業設備中,通過控制氣源的氣壓,打開電磁閥…

網絡安全的守護者:iVX 如何構建全方位防護體系

一、安全技術的三大趨勢 在數字化時代,網絡安全面臨著前所未有的挑戰。隨著企業級應用的普及,安全技術也在不斷演進。目前,安全技術架構的發展呈現出三大趨勢: 零信任架構的崛起:傳統的網絡安全依賴于邊界防護&#…

微軟云如何申請使用

微軟云(Azure)新手“開荒”指南:5步搞定賬戶,直達云端! 還在為云計算的復雜門檻發愁嗎?別擔心!當全球83%的企業都在加速“上云”,微軟智能云Azure憑借其在全球34個區域、200服務的龐…

magic-api配置Git插件教程

一、配置gitee.com 1,生成rsa密鑰,在你的電腦右鍵使用管理員身份運行(命令提示符),執行下面命令 ssh-keygen -t rsa -b 2048 -m PEM一直按回車鍵,不需要輸入內容 找到 你電腦中的~/.ssh/id_rsa.pub 文件…

ojs導入顯示空白頁錯誤信息

ojs技術支持:ojs.net.cn error: Uncaught Error: Call to a member function getData() on null in /var/www/html/ojs3/classes/search/ArticleSearchIndex.inc.php:38 Stack trace: #0 /var/www/html/ojs3/plugins/importexport/esci/filter/esciXmlArticleFilter.inc.php(…

【ConvLSTM第一期】ConvLSTM原理

目錄 🧠 一、ConvLSTM 原理詳解1.1 背景1.2 ConvLSTM 的結構 參考 ConvLSTM(Convolutional Long Short-Term Memory)是一種結合了卷積神經網絡(CNN)與循環神經網絡(RNN)中 LSTM(長短…

4.8.1 利用Spark SQL實現詞頻統計

在利用Spark SQL實現詞頻統計的實戰中,首先需要準備單詞文件并上傳至HDFS。接著,可以通過交互式方法或創建Spark項目來實現詞頻統計。交互式方法包括讀取文本文件生成數據集,扁平化映射得到新數據集,然后將數據集轉成數據幀&#…

Linux相關概念和易錯知識點(41)(UDP、TCP報頭結構)

目錄 1.UDP(1)傳輸層(2)UDP報頭(3)緩沖區和sk_buff①緩沖區②sk_buff 2.TCP(1)發送和接受緩沖區(2)報頭結構①按序到達②可靠傳輸③流量控制④緊急指針 1.UDP…

光譜相機在生態修復監測中的應用

光譜相機通過多維光譜數據采集與智能分析技術,在生態修復監測中構建起?“感知-評估-驗證”?的全周期管理體系,其核心應用方向如下: 一、土壤修復效能量化評估 ?重金屬污染動態監測? 通過短波紅外(1000-2500nm)波…

[網頁五子棋]項目介紹以及websocket的消息推送(輪詢操作)、報文格式和握手過程(建立連接過程)

文章目錄 項目背景核心技術創建項目WebSocket消息推送輪詢操作 報文格式握手過程(建立連接過程) 項目背景 用戶模塊 用戶的注冊和登錄管理用戶的天梯分數,比賽場數,獲勝場數等信息 匹配模塊 依據用戶的天梯積分,來實現匹配機制 對戰模塊 把兩…

時序模型介紹

一.整體介紹 1.單變量 vs 多變量時序數據 單變量就是只根據時間預測,多變量還要考慮用戶 2.為什么不能用機器學習預測: a.時間不是影響標簽的關鍵因素 b.時間與標簽之間的聯系過于弱/過于復雜,因此時序模型依賴于時間與時間的相關性來進行預…

尚硅谷redis7 86 redis集群分片之3主3從集群搭建

86 redis集群分片之3主集群搭建 3主3從redis集群配置 找3臺真實虛擬機,各自新建 m?dir -p /myredis/cluster 新建6個獨立的redis實例服務 IP:192.168.111.175端口6381/端口6382 vim /myredis/cluster/redisCluster6381.conf bind 0.0.0.0 daemonize yes protected-mode no …

Python服務器請求轉發服務

前言: 服務器無法連接外網 配置步驟 準備python腳本服務器內下載python 示例 1.下載python創建虛擬環境以及配置 -- 磁盤空間 df -h -- 下載apt sudo yum install apt -y-- 下載python pip sudo apt install python3 python3-pip python3-venv -y-- 測試查看 …

02.K8S核心概念

服務的分類 有狀態服務:會對本地環境產生依賴,例如需要把數據存儲到本地磁盤,如mysql、redis; 無狀態服務:不會對本地環境產生任何依賴,例如不會存儲數據到本地磁盤,如nginx、apache&#xff…

Java八股-Java優缺點,跨平臺,jdk、jre、jvm關系,解釋和編譯

java優勢劣勢? 優勢:面向對象,平臺無關,垃圾回收,強大的生態系統 劣勢:運行速度慢(相比于c和rust這樣的原生編譯語言會比較慢),語法繁瑣(相比于python&…

Attention Is All You Need論文閱讀筆記

Attention is All You Need是如今機器學習研究者必讀的論文,該文章提出的Transformer架構是如今很多機器學習項目的基礎,說該文章極大推動了機器學習領域的研究也不為過。 但這么重要,也是必讀的文章對初學者來說其實并不友好,很多…

【MAC】YOLOv8/11/12 轉換為 CoreML 格式并實現實時目標檢測

在本文中,我們將詳細介紹如何將 YOLOv8/11/12 模型轉換為 CoreML 格式,并使用該模型在攝像頭實時檢測中進行目標檢測。主要適用于M1、M2、M3、M4芯片的產品。 以下教程在YOLOv8/11/12均適用,此處就以 YOLOv11 舉例 目錄 前提條件YOLOv8/11/12 轉換為 CoreML實時目標檢測結論…

Redis--緩存擊穿詳解及解決方案

緩存擊穿 緩存擊穿問題也稱熱點key問題,就是一個高并發訪問(該key訪問頻率高,訪問次數多)并且緩存重建業務比較復雜的key突然失效了,大量的請求訪問會在瞬間給數據庫帶來巨大的沖擊。 緩存重建業務比較復雜&#xff…

UniApp X:鴻蒙原生開發的機會與DCloud的崛起之路·優雅草卓伊凡

UniApp X:鴻蒙原生開發的機會與DCloud的崛起之路優雅草卓伊凡 有句話至少先說,混開框架中目前uniapp x是率先支持了鴻蒙next的開發的,這點來說 先進了很多,也懂得審時度勢。 一、UniApp X如何支持鴻蒙原生應用? UniAp…

域名解析怎么查詢?有哪些域名解析查詢方式?

在互聯網的世界里,域名就像是我們日常生活中的門牌號,幫助我們快速定位到想要訪問的網站。而域名解析則是將這個易記的域名轉換為計算機能夠識別的IP地址的關鍵過程。當我們想要了解一個網站的域名解析情況,或者排查網絡問題時,掌…