面試常問:注冊中心宕機,遠程調用還能成功嗎?

? ? ? ?在微服務架構里,注冊中心(像 Nacos、Eureka、Consul 等)是服務發現與治理的核心。可要是注冊中心突然宕機,微服務間的遠程調用還能順利進行嗎?這是面試時很常被問到的問題,下面我們就來深入剖析。

一、遠程調用的 “兩次請求” 與實例緩存的引入

在沒有實例緩存的情況下,微服務每次發起遠程調用,大致要經歷以下兩次請求

  1. 請求注冊中心,獲取目標服務的地址列表:服務消費者得先去注冊中心查詢,找到自己要調用的服務提供者都有哪些實例,以及這些實例對應的網絡地址。
  2. 向目標服務的具體地址發送請求:拿到地址列表后,消費者會挑選其中一個地址,向對應的服務提供者發送實際的業務請求。

不過,這種每次調用都進行兩次請求的方式,會讓性能大打折扣。為了解決這個問題,實例緩存就應運而生了。實例緩存的作用是在服務消費者本地,同步并實時更新注冊中心里的服務實例信息。有了它,服務消費者不用每次調用都去注冊中心查詢,能直接從本地緩存里獲取目標服務的地址,從而提升調用效率。

二、注冊中心宕機時,遠程調用能否成功?

注冊中心宕機后,遠程調用是否能成功,關鍵要看服務消費者本地有沒有目標服務的實例緩存

場景一:服務消費者已有目標服務的實例緩存

比如 “訂單” 服務之前調用過 “商品” 服務,此時 “訂單” 服務本地已經緩存了 “商品” 服務的實例地址。
由于實例緩存還存在,“訂單” 服務發起遠程調用時,就不再依賴注冊中心了。它會直接從本地緩存里取出 “商品” 服務的地址,然后發送請求,所以遠程調用能成功

這也體現出實例緩存的重要性,它讓微服務在注冊中心短暫不可用的時候,依然能保證服務間調用的連續性,增強了系統的容錯能力。

場景二:服務消費者無目標服務的實例緩存

要是 “訂單” 服務是第一次發起對 “商品” 服務的遠程調用,也就是之前從來沒有調用過 “商品” 服務,本地沒有 “商品” 服務的實例緩存。
這種情況下,“訂單” 服務要發起遠程調用,就必須依賴注冊中心去獲取 “商品” 服務的地址列表。但現在注冊中心已經宕機,“訂單” 服務沒辦法獲取到目標服務的地址,所以遠程調用不能成功

三、總結

注冊中心宕機后,遠程調用是否能成功,取決于服務消費者本地是否有目標服務的實例緩存:

  • 若有緩存(之前調用過目標服務),遠程調用能成功,因為可以從本地緩存獲取服務地址,不依賴注冊中心。
  • 若沒有緩存(首次調用目標服務),遠程調用會失敗,因為獲取服務地址必須依賴注冊中心。

由此可見,實例緩存是微服務架構中提升遠程調用性能、增強系統容錯性的關鍵機制,它在注冊中心和服務消費者之間,搭建了一道 “緩沖屏障”,讓系統在注冊中心出現異常時,仍能維持一定程度的服務調用能力。

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

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

相關文章

《用 Python 和 Matplotlib 繪制折線圖:從入門到實戰的可視化指南》

《用 Python 和 Matplotlib 繪制折線圖:從入門到實戰的可視化指南》 一、引言:數據可視化的力量,從一張折線圖開始 在我多年的開發與教學經歷中,最常被問到的問題之一是:“如何讓數據更直觀?”我的答案始終如一:用圖說話。而在眾多圖表類型中,折線圖以其簡潔、清晰的…

Seate的XA模式和AT模式

目錄 一、XA模式 【1】兩階段提交 【2】Seata的XA模型 【3】優缺點 【4】實現XA模式 二、AT模式 【1】Seata的AT模型 【2】AT與XA的區別 【3】臟寫問題 【4】優缺點 【5】實現AT模式 一、XA模式 XA 規范 是 X/Open 組織定義的分布式事務處理(DTP&#xf…

CTFHub SSRF通關筆記6:Gopher Redis原理詳解與滲透實戰

目錄 一、SSRF Gopher Redis 1、功能簡介 2、攻擊原理 (1)SSR的作用 (2)Gopher 協議特性 (3)攻擊 Redis 步驟 二、gopherus 1、功能簡介 2、攻擊Redis服務方法 三、Gopherus安裝 1、源碼下載 2…

數據結構之二叉樹(2)

數據結構之二叉樹(2)1.二叉樹的存儲結構2.實現順序結構二叉樹2.1何為堆2.2堆的性質2.3堆的定義2.3堆的初始化與銷毀3.1向上調整算法3.2向下調整算法4.入堆5.出堆讓花成花,讓樹成樹上一次我們學習了樹的分類,并初步了解了二叉樹。今…

Linux操作系統之Ubuntu

Ubuntu是基于Debian的開源Linux發行版,由Canonical公司維護,以用戶友好性和穩定性著稱。它廣泛應用于個人電腦、服務器及云計算環境,支持多種硬件架構。Ubuntu的特點Ubuntu提供定期更新版本(每6個月)和長期支持版本&am…

kotlin的函數前面增加suspend關鍵字的作用

deepseek回答: Kotlin中suspend關鍵字的作用詳解 核心作用 suspend關鍵字用于標記?掛起函數?,使其能夠在協程中實現非阻塞的異步操作。 suspend關鍵字的本質作用 suspend關鍵字的主要作用是?標記一個函數為掛起函數?,使其能夠在協程中使用…

Vibe Coding實戰項目:用Qwen3-Coder做了個AI跳舞視頻生成器

大家好,這里是K姐。 一個 Vibe Coding 的探索者。 前段時間發現通義發起了一個Qwen3-Coder挑戰賽,最高獎金有10000元,研究了一下,我發現這個賽道太寬了,不限項目,用 AI Coding 做數據分析、個人Blog、抓取…

Kafka面試精講 Day 13:故障檢測與自動恢復

【Kafka面試精講 Day 13】故障檢測與自動恢復 在“Kafka面試精講”系列的第13天,我們將深入探討 Kafka 高可用體系中的關鍵一環:故障檢測與自動恢復機制。作為分布式系統的核心能力,Kafka 如何在 Broker 宕機、網絡分區或磁盤故障時快速感知…

【前沿技術拓展Trip Two】具身智能

具身智能(Embodied AI)的認識,進展,以及為何難以實現 在講具身智能之前,我們不得不先行介紹一下離身智能與離身認識系統這兩個極其相關且更加常見的概念 離身認識系統 其實目前絕大多數的AI,例如DeepSeek&a…

使用electron將vue3網頁項目包裝成pc客戶端

一、準備前工作在項目的根目錄 打開命令行工具 安裝四個依賴庫安裝報錯的話二、準備工作完成之后,在項目根目錄需要有倆個文件在項目根目錄創建electron文件夾在vite.config.js中添加配置項在package.json中添加配置項運行命令 npm run electron:build 打包關于mac&…

基于安全抽象模型(SAM)的汽車網絡安全防御與攻擊分析

摘要自動駕駛汽車比以往任何一種個人出行交通工具都具有更大的受攻擊可能性。這主要是因為這類汽車對通信有極高的需求,一方面是出于功能和安全方面的考慮,另一方面則是為了滿足舒適性需求。無人駕駛汽車需要與周圍環境進行通信的接口、直接連接&#xf…

線掃相機不出圖原因總結

1、幀觸發信號有問題 線掃相機出圖由幀信號決定開始采集,如果沒有幀信號線掃相機無法識別開始信號,所以不出圖 1)沒有給相機幀信號 幀信號是一個短暫的脈沖信號,持續時間不要太長,相機能識別就可以,一般由plc或者控制卡的數字量輸出口觸發,可以通過監測數字量輸出口來確…

開發避坑指南(46):Java Stream 對List的BigDecimal字段進行求和

需求 對int,long類型的數據求和直接用stream().mapToInt()、stream().mapToDouble(),可是沒有stream().mapToBigDecimal()這樣的方法,那么如何用stream對List的BigDecimal字段進行求和? 代碼實現 直接上代碼 public class OrderIn…

pycharm如何處理python項目間引用

1. 如何在pycharm中將其它項目添加到打開的項目中 如圖所示:文件->打開->附加(Attach)即可2.如何引用:直接作為一個普通package引用即可 from attack_projectxxx.modulexxx import xxx3.pyinstaller如何編譯這種引用其它項目的可執行文…

家庭勞務機器人發展階段與時間預測

家庭勞務機器人大規模進入家庭不會是一個單一的時間點,而是一個分階段、漸進式的過程。我們可以將這個進程分為以下幾個階段,并對每個階段的時間線進行預測:第一階段:單一功能機器人普及(現在 - 2025年)這個…

Zynq開發實踐(FPGA之spi實現)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing 163.com】雖然串口用的地方比較多,實現起來也比較簡單。但是串口本身速度比較慢,不利于高速數據通信。而且單個串口沒有辦法和很多芯片…

指甲打磨機/磨甲器MCU控制方案開發,輕松解決磨甲問題

美甲打磨機/指甲打磨機核心功能需求 1. 基礎功能 無級調速(5,000-30,000 RPM,PWM控制) 正反轉切換(可選,用于拋光/去角質) 按鍵鎖/防誤觸(長按3秒解鎖) 鋰電池管理(3.7V單節,帶充電指…

臨床數據挖掘與分析:利用GPU加速Pandas和Scikit-learn處理大規模數據集

點擊 “AladdinEdu,同學們用得起的【H卡】算力平臺”,注冊即送-H卡級別算力,80G大顯存,按量計費,靈活彈性,頂級配置,學生更享專屬優惠。 摘要 隨著電子健康記錄(EHR)的普…

二進制安裝MySQL 8.0指南:跨平臺、自定義數據路徑、安全遠程訪問配置

二進制安裝 MySQL 8.0 在生產或測試環境中,我們常常希望避免包管理器帶來的依賴和交互問題,尤其是當系統自帶版本過舊或安裝過程頻繁彈窗時。此時,使用 MySQL 官方提供的二進制壓縮包(Generic Linux Binary) 進行安裝…

Z檢驗與T檢驗的區別與聯系:原理、公式和案例全解

Z檢驗與T檢驗全解析:原理、區別與實際案例 統計學的核心任務之一,就是通過有限的樣本數據去推斷總體特征。在這一過程中,假設檢驗成為了最常見的工具。而在眾多檢驗方法中,Z檢驗與T檢驗幾乎是入門必學,也是應用最廣泛的…