Eureka、Nacos、Zookeeper 優雅上下線機制

? 三大注冊中心優雅上下線機制對比

維度EurekaNacosZookeeper
注冊方式客戶端注冊 + 心跳維持客戶端注冊 + 心跳維持客戶端創建臨時節點
服務可用狀態控制STARTINGUPDOWNOUT_OF_SERVICEUPDOWNSTARTING無顯式狀態標識,靠節點存在與否判定
上線控制方式通過 HealthIndicator 控制狀態為 UP同 Eureka,可配合 Spring Boot Health 指標延遲注冊臨時節點以實現上線控制
下線通知方式設置狀態為 DOWN,延遲銷毀刪除實例或設置為 DOWN,配合 @PreDestroy主動刪除節點或斷開會話
自動剔除心跳超時(默認90s)心跳超時(默認30s)會話斷開即剔除
健康檢查支持內置健康檢查整合 Spring Boot Actuator內置健康檢查整合 Spring Boot Actuator無內置健康檢查機制
與 K8s 的配合可結合 preStop 調用自定義接口實現配合 preStop + /actuator/service-down延遲 preStop + 刪除臨時節點

🧠 一、Eureka 優雅上下線詳解

? 優雅上線

  • 服務啟動時,先處于 STARTING

  • 等緩存、RPC 初始化完成后標記為 UP

@PostConstruct
public void afterInit() {ApplicationInfoManager.getInstance().setInstanceStatus(InstanceInfo.InstanceStatus.UP);
}

? 優雅下線

@PreDestroy
public void shutdown() {// 設置為 DOWN 狀態,讓其他服務停止訪問ApplicationInfoManager.getInstance().setInstanceStatus(InstanceInfo.InstanceStatus.DOWN);Thread.sleep(10000); // 等待請求處理完畢
}


🧠 二、Nacos 優雅上下線詳解

? 優雅上線

  • 服務默認通過心跳注冊,但只有健康檢查返回 UP 才真正生效

@Component
public class MyHealthIndicator implements HealthIndicator {private volatile boolean ready = false;public void setReady(boolean ready) { this.ready = ready; }public Health health() {return ready ? Health.up().build() : Health.down().build();}
}

? 優雅下線

  • 手動設置為 DOWN

@PreDestroy
public void shutdown() {healthIndicator.setReady(false);Thread.sleep(10000); // 等待請求處理完
}

  • REST API 下線實例:

curl -X DELETE 'http://nacos:8848/nacos/v1/ns/instance?serviceName=my-service&ip=127.0.0.1&port=8080'


🧠 三、Zookeeper 優雅上下線詳解

? 優雅上線

  • 延遲注冊臨時節點,等服務準備好再注冊

zkClient.create().withMode(CreateMode.EPHEMERAL).forPath("/service/order/instance-id", data);

? 優雅下線

  • 主動刪除臨時節點

zkClient.delete().forPath("/service/order/instance-id");

  • 或通過 @PreDestroy

@PreDestroy
public void shutdown() {// 先通知業務不可用// 刪除注冊節點Thread.sleep(5000);
}


📌 四、實際項目中如何選型和應用?

場景推薦注冊中心原因說明
Spring Cloud 微服務Eureka / Nacos與 Spring Boot 集成度高,支持健康檢查
多語言、多平臺系統Nacos / ZKNacos 支持 REST/HTTP;ZK 跨平臺但需 Curator 等客戶端
服務上下線頻繁、需強一致性Zookeeper臨時節點機制更穩定
配合 Kubernetes 自動上下線Nacos可通過 /actuator + preStop 實現平滑控制


🧪 五、面試場景答題模板(含口訣)

面試題:你們服務上下線是怎么做的?

答題模板:

我們使用的是 Spring Cloud + Nacos 架構。服務啟動時,會優先加載緩存、RPC 客戶端、配置等,然后通過 Spring Boot 的 HealthIndicator 標記為 UP,實現上線控制。下線時,通過 @PreDestroy 把狀態標記為 DOWN,并等待 10 秒確保請求處理完成,配合 Kubernetes 的 preStop 生命周期鉤子做到了真正意義上的服務優雅下線。在非 Spring Cloud 的系統中,我們也采用過 Zookeeper 注冊機制,通過臨時節點控制服務上下線生命周期,結合 Curator 管理服務狀態。


🎯 六、記憶口訣

🧘 上線三步驟:
1)緩存預熱;
2)健康探測;
3)標記為 UP;🧘 下線三守則:
1)標記為 DOWN;
2)延時摘除;
3)資源釋放;🌐 各有千秋:
Eureka 內建狀態強;
Nacos 接口好擴展;
Zookeeper 臨時節點最穩。

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

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

相關文章

Flink與Kubernetes集成

引言 在當今大數據與云計算蓬勃發展的時代,容器編排與流處理技術成為企業數據處理架構的關鍵支柱。Kubernetes作為容器編排系統的行業標準,能夠高效自動化地部署、擴展和管理計算機應用程序;Apache Flink則是流處理和批處理領域的佼佼者&…

第五節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 角色管理模塊(上)

Vben5 系列文章目錄 ?? 基礎篇 ? 第一節:Vben Admin 最新 v5.0 (vben5) 快速入門 ? 第二節:Vben Admin 最新 v5.0 (vben5) 快速入門 - Python Flask 后端開發詳解(附源碼) ? 第三節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 對接后端登錄接口(上) ? 第四節:Vben Ad…

實施企業預算管理的企微CRM系統技巧:從成本控制到價值創造

一、企微CRM管理系統為何成為預算管理新引擎? 官方數據顯示,接入企微CRM系統的企業平均降低客戶管理成本28%,預算執行效率提升40%。這源于企微CRM管理軟件的三大獨特優勢: 原生集成能力:與企業微信通訊錄、會話存檔無縫對接&…

WebFuture:手機版頁面部分區域報錯:未將對象引用設置到對象的實例

問題描述: 手機版頁面部分區域報錯:未將對象引用設置到對象的實例,PC板訪問正常。 問題分析: 對比PC和手機頁面模板,調用代碼有以下差異,手機版模板沒兼容null值,簡介為空導致報錯。 解決方法…

【Cursor點擊登錄后一直轉圈,無反應】

Cursor點擊登錄后一直轉圈,無反應 一、問題描述二、解決方案 一、問題描述 1、進入Cursor官網(國際版): Cursor國際版地址 2、填入賬號密碼,點擊登錄 3、一直轉圈,無法登錄 二、解決方案 使用梯子&…

【無標題】世界模型

為什么大語言模型,沒有真正推動經濟大幅增長,但世界模型有可能 5月份谷歌IO大會,DeepMind老板(谷歌AI業務負責人,2024Nobel化學獎得主,黛密斯哈薩比斯)提到,谷歌接下來目標是做世界…

Doc2X:?精度、?性價??檔解析 API,助力Arxiv論文智能解讀Agent構建

前言 在AI大模型時代,RAG(Retrieval-Augmented Generation)檢索增強生成技術已經成為構建智能知識庫和問答系統的核心架構。然而,在實際項目實施過程中,開發者們往往會遇到一個關鍵痛點:如何高質量地將各種…

uniapp 對接deepseek

廢話不多說直接上代碼 // 小程序專用流式服務 export const streamChatMiniProgram (messages, options {secret: "" }) > {return new Promise((resolve, reject) > {// 構建請求數據 const requestData {model: deepseek-chat,messages,stream: true,ma…

Softhub軟件下載站實戰開發(四):代碼生成器設計與實現

文章目錄 Softhub軟件下載站實戰開發(四):代碼生成器設計與實現1.前言 📜2.技術選型3.架構概覽 🏗?3.1 架構概覽3.2 工作流程詳解 4.核心功能實現 ?4.1 配置管理系統4.2 數據庫表結構解析4.3 模板渲染引擎4.4 智能類…

鴻蒙組件通用屬性深度解析:從基礎樣式到高級定制的全場景指南

一、引言:通用屬性 —— 構建視覺體驗的核心語言 在鴻蒙應用開發體系中,組件的視覺呈現與交互體驗主要通過通用屬性系統實現。這些屬性構成了從基礎樣式定義(尺寸、顏色)到復雜交互控制(動畫、布局)的完整…

選擇與方法專欄(9) 職場內篇: 是否要跳出舒適圈?如何處理犯錯?

合集文章 一個中科大差生的8年程序員工作總結_8年工作經驗 程序員-CSDN博客 選擇與方法專欄(1)職場外篇:謹慎的選擇城市、行業、崗位-CSDN博客 選擇與方法專欄(2)職場外篇: 每個時代都有自己的機遇-CSDN…

DCM4CHEE ARCHIVE LIGHT 源代碼解析(1)-前言

系列文章目錄 DCM4CHEE ARCHIVE LIGHT 源代碼解析(1)-前言DCM4CHEE ARCHIVE LIGHT 源代碼解析(2)-STOWRS文章目錄 系列文章目錄概述一、項目結構1、下載解壓代碼2、IntelliJ IDEA加載源代碼二、編譯發布1、編譯 dcm4chee-arc-ear 項目2、編譯 dcm4chee-arc-ui2 項目寫在結尾概…

基于DeepSeek-R1-Distill-Llama-8B的健康管理助手微調過程

基于DeepSeek-R1-Distill-Llama-8B的健康管理助手微調過程 本次創新實訓項目的主要任務是利用DEEPSEEK提供的開源模型,通過微調技術,實現一個專注于健康管理與醫療咨詢的人工智能助手。本文詳細記錄我們如何對DeepSeek-R1-Distill-Llama-8B模型進行微調…

TI 毫米波雷達走讀系列—— 3DFFT及測角

TI 毫米波雷達走讀系列—— 3DFFT及測角 測角原理 —— 角度怎么測測角公式 —— 角度怎么算相位差測角基本公式為什么是3DFFT1. 空間頻率與角度的對應關系2. FFT的數學本質:離散空間傅里葉變換 測角原理 —— 角度怎么測 本節內容解決角度怎么測的問題&#xff0c…

圖解JavaScript原型:原型鏈及其分析 02 | JavaScript圖解

? ? 任何函數既可以看成一個實例對象又可以看成一個函數 作為一個實例對象其隱式原型對象指向其構造函數的顯式原型對象 作為一個函數其顯式原型對象指向一個空對象 任何一個函數其隱式原型對象指向其構造函數的顯式原型對象 任何一個函數是 Function 函數創建的實例&…

自定義View實現K歌開始前歌詞上方圓點倒計時動畫效果

在上一篇KRC歌詞解析原理及Android實現K歌動態歌詞效果介紹了動態歌詞的實現,我們繼續完善一下。在K歌場景中,一些歌曲前奏很長,用戶不知道什么時候開始唱,這時一般在歌詞上方會有一個圓點倒計時的效果來提醒用戶開始時間,如下圖:開始唱之前,圓點會逐個減少,直至圓點全…

ffmpeg subtitles 字幕不換行的問題解決方案

使用ffmpeg在mac下處理srt中文字幕可以自動換行,linux環境下不換行直接超出視頻區域了 這是因為在mac環境下的SimpleText 渲染器自動處理了文本,而linux無法處理。 mac: linux: 方案: ?:網上找到的方案…

Trino入門:開啟分布式SQL查詢新世界

目錄 一、Trino 是什么 二、核心概念與架構解析 2.1 關鍵概念詳解 2.2 架構剖析 三、快速上手之安裝部署 3.1 環境準備 3.2 安裝步驟 3.2.1 下載軟件包 3.2.2 安裝軟件包 3.2.3 啟動服務 3.2.4 驗證服務 3.2.5 安裝 Trino 客戶端 3.3 目錄結構說明 四、實戰演練&…

EFK架構的數據安全性

EFK架構(Elasticsearch Filebeat Kibana)的數據安全性需通過?傳輸加密、訪問控制、存儲保護?三層措施保障,其核心風險與加固方案如下: 一、數據傳輸安全風險與加固 ?明文傳輸風險? Filebeat → Elasticsearch 的日…

2025年滲透測試面試題總結-安全服務工程師(駐場)(題目+回答)

安全領域各種資源,學習文檔,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具,歡迎關注。 目錄 安全服務工程師(駐場) 1. 挖過的一些漏洞(舉例說明) 2. 滲透測試的思路&#xff08…