Spring Cloud Alibaba 之 Nacos

Spring Cloud Alibaba 之 Nacos

.
Nacos官方文檔:
https://nacos.io/docs/latest/overview/?spm=5238cd80.47ee59c.0.0.770fcd36HoVbU6


1.什么是Nacos

Nacos(Dynamic Naming and Configuration Service)是阿里巴巴開源的一款動態服務發現、配置管理和服務管理平臺,致力于簡化云原生應用的構建與治理,相比其他注冊中心Eureka,Consul更加強大。

一句話總結:Nacos = 注冊中心 + 配置中心 + 動態 DNS + 服務治理 的綜合體。

Nacos Server 必須獨立啟動,Spring Boot 不會內嵌它,不支持 Spring Boot 直接啟動為注冊中心,需要單獨運行 Nacos Server。


2. 主流注冊中心對比(Eureka,Consul,Zookeeper,Nacos)

.
根據CAP原理,將NoSQL數據庫分成了滿足CA原則,滿足CP原則和滿足AP原則三大類, CAP理論
指出,一個分布式系統不可能同時滿足C (一致性) 、A (可用性) 、P (容錯性),由于分區容錯性P再分布式系統中是必須要保證的,因此我們只能再A和C之間進行權衡。

CA:單點集群,滿足一致性,可用性的系統,通常可擴展性較差
CP:滿足一致性,分區容錯的系統,通常性能不是特別高
AP:滿足可用性,分區容錯的系統,通常可能對一致性要求低一些

對比圖表:

注冊中心CAP模型一致性協議設計側重點典型適用場景
EurekaAP自定義復制協議高可用性、最終一致性Netflix 生態、Spring Cloud 體系、容忍短暫不一致的云原生環境
ConsulCPRaft強一致性、多數據中心支持金融、政務等強一致需求場景;多數據中心管理
ZookeeperCPZAB(類Paxos)強一致性、順序一致性分布式協調場景(如Kafka、Hadoop)、分布式鎖、選主
Nacos混合模式(AP/CP可切換)Distro(AP)Raft(CP)靈活適配、臨時實例AP/持久實例CP全場景覆蓋,微服務注冊發現與配置中心;動態切換需求

3. Nacos的AP與CP模式

Nacos支持AP和CP兩種模式,可以根據具體的使用場景進行選擇。默認情況下是AP模式,可以通過修改Nacos的配置文件來切換AP/CP。

  • 在AP模式下,Nacos保證高可用性和可伸縮性,但不保證強一致性。
  • 在CP模式下,Nacos保證強一致性,但可能會降低可用性和可伸縮性。

在實際應用中,具體應該采用哪種模式,需要根據業務的特點和需求來判斷。

如果在分布式系統中,某些數據的一致性對業務有非常高的要求,例如金融、支付等場景,那么可以選擇使用CP模式。在CP模式下,當發生網絡分區或故障時,為了保證數據一致性,Nacos會對服務進行自動隔離和恢復。但是,這會導致部分服務不可用,因此可用性會受到影響。

如果對于某些服務來說,可用性比一致性更加重要,例如網站、在線游戲等場景,那么可以選擇使用AP模式。在AP模式下,Nacos會優先保證服務的可用性,如果發生了網絡分區或故障,Nacos會在保證一定的可用性的前提下,盡可能保持數據一致性。這樣雖然可能會導致數據不一致的情況,但是可以保證服務的可用性,從而減少業務的影響。


4. Nacos核心功能解析:

4.1 服務發現與健康監測

在這里插入圖片描述

服務注冊:服務啟動時向Nacos注冊實例信息(IP、端口、元數據),通過REST API或SDK實現。

服務發現:消費者通過服務名查詢可用實例列表,支持負載均衡策略(如輪詢、權重)。

健康檢查

  • 臨時實例:客戶端主動上報心跳(默認5秒/次),超時15秒標記不健康,30秒剔除。

  • 永久實例:服務端主動探測(HTTP/TCP),適應復雜網絡環境。

保護閾值:當健康實例比例低于閾值(如0.5),返回所有實例(含不健康)避免雪崩。


4.2 動態配置管理

配置模型:
在這里插入圖片描述

  • Namespace:隔離環境(如dev/test/prod)。

  • Group:分組管理相關配置(如DEFAULT_GROUP)。

  • Data ID:唯一標識配置集(如user-service.yaml)。

  • 動態更新:客戶端監聽配置變更,秒級生效,無需重啟服務。

  • 版本與回滾:支持配置歷史版本管理及一鍵回滾。


4.3. 動態DNS與流量治理

服務路由:將服務名解析為IP列表,支持權重路由和流量分發。

元數據管理:為服務添加標簽(如版本、區域),實現灰度發布。


5. 總結

Nacos的核心價值在于統一化治理:通過服務發現、配置管理、流量控制三大能力,解決微服務架構中的動態協調問題。其優勢包括:

  • 開箱即用:控制臺提供可視化操作,降低運維成本。

  • 高擴展性:插件機制支持與CMDB、監控系統集成。

  • 多場景適配:從傳統應用到云原生,支持Kubernetes、Dubbo、Spring Cloud等生態。

生產建議:

  • 集群部署至少3節點,外置MySQL保證數據持久化;

  • 配置保護閾值(建議0.6-0.8)避免流量洪峰擊穿實例;

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

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

相關文章

Car Kit重構車機開發體驗,讓車載應用開發駛入快車道

在智能座艙成為汽車行業“新四化”核心戰場的今天,開發者們正面臨這樣的挑戰:如何讓手機應用快速適配車機場景?如何實現手機與車機無感流轉?如何在保障駕駛安全的前提下提供沉浸式交互體驗? HarmonyOS SDK 車服務&…

ruoyi-flowable-plus Excel 導入數據 Demo

📁 項目結構簡述 ruoyi-flowable-plus 是基于 RuoYi 的擴展項目,使用: 后端:Spring Boot MyBatis Flowable前端:Vue.js 📥 Excel 導入功能 Demo 以導入用戶數據為例,展示完整導入流程。 …

kafka 日志索引 AbstractIndex

AbstractIndexAbstractIndex 是 Kafka 日志(Log)子系統中一個至關重要的基礎類。它為 Kafka 的各種索引文件(如偏移量索引 .index 和時間戳索引 .timeindex)提供了一個統一的、抽象的框架。這個類的設計目標是實現極高的讀寫性能和…

重學前端008 --- 響應式網頁設計 CSS 無障礙 Quiz

文章目錄meta 總結html 頁面結構img 尺寸子選擇器 >a 錨點僅屏幕閱讀器可見li 元素的懸停設置小屏幕防止溢出meta 總結 <head><!-- 基礎字符編碼聲明 --><meta charset"UTF-8"><!-- 視口設置&#xff0c;響應式設計必備 --><meta nam…

C# 調用CodeSoft模板打印標簽,編輯模板覆蓋根目錄的文件,不能拷貝

C# 調用CodeSoft模板打印標簽&#xff0c;編輯模板覆蓋根目錄的文件&#xff0c;不能拷貝&#xff0c;報文件已經打開。 原因&#xff1a;C#窗體關閉時&#xff0c;沒有關閉LabelManager2.ApplicationClass labApp&#xff0c;別忘記寫labApp1.Quit(); if (labApp1 ! null) {la…

Logback簡單使用

Logback 日志框架介紹 正如你所知&#xff0c;開發者擁有大量日志工具可供選擇。本節中&#xff0c;我們將學習一個非常流行的日志庫 —— Logback。它是 Log4j 日志庫的繼任者&#xff0c;基于相似的理念構建。Logback 在同步和異步日志記錄方面都非常快速&#xff0c;并提供了…

Python爬蟲實戰:研究langid.py庫相關技術

一、引言 在當今全球化的網絡環境下,互聯網上的內容呈現出多語言的特點。對于許多自然語言處理 (NLP) 任務,如文本分類、情感分析和信息檢索,準確識別文本的語言是首要步驟。網絡爬蟲作為獲取互聯網內容的重要工具,結合語言識別技術,可以為多語言信息處理提供豐富的數據來…

打車代駕 app 派單接單系統模塊搭建

一、邏輯分析打車代駕 APP 的派單接單系統模塊是整個應用的核心部分&#xff0c;它需要高效、準確地處理訂單分配和司機接單流程&#xff0c;以確保用戶能夠快速得到服務&#xff0c;司機能夠合理地接到訂單。用戶端下單邏輯&#xff1a;用戶打開 APP&#xff0c;輸入出發地、目…

Java Stream API性能優化:原理深度解析與實戰指南

Java Stream API性能優化&#xff1a;原理深度解析與實戰指南 技術背景與應用場景 隨著大數據量處理和高并發場景的普及&#xff0c;傳統的集合遍歷方式在代碼可讀性和性能上逐漸顯現瓶頸。Java 8引入的Stream API&#xff0c;通過聲明式的流式編程極大提升了開發效率和可讀性&…

Nginx配置proxy protocol代理獲取真實ip

Nginx配置proxy protocol 文章目錄Nginx配置proxy protocol前言一、PROXY Protocol協議二、配置方法代理服務器配置http模塊代理??Stream 模塊?代理測試配置是否生效端口檢查測試ip記錄驗證http驗證tcp注意事項和理解誤區應用程序機器配置總結前言 在現代開發中有很多場景需…

什么是商業智能BI數據分析的指標爆炸?

指標爆炸這個詞大家可能都是第一次聽說&#xff0c;指標怎么會爆炸呢&#xff1f;其實這個是我們很多年前在一些商業智能BI項目上總結出來的一種場景或者現象&#xff0c;就是過于的開放給業務人員在BI自助分析過程中創造了很多衍生性的分析指標&#xff0c;結果就造成了前端指…

Spring AI 系列之十八 - ChatModel

之前做個幾個大模型的應用&#xff0c;都是使用Python語言&#xff0c;后來有一個項目使用了Java&#xff0c;并使用了Spring AI框架。隨著Spring AI不斷地完善&#xff0c;最近它發布了1.0正式版&#xff0c;意味著它已經能很好的作為企業級生產環境的使用。對于Java開發者來說…

Linux學習之Linux系統權限

在上一篇的內容中我們學習到了Linux系統命令相關的知識及其相關的擴展內容&#xff0c;本期我們將學習Linux基礎的另一個重要部分&#xff1a;Linux系統權限管理 作者的個人gitee&#xff1a;樓田莉子 (riko-lou-tian) - Gitee.com 目錄 權限概念及必要性 什么是權限 為什么要…

Web3.0 能為你帶來哪些實質性的 改變與突破

如今各種大廠裁員消息層出不窮&#xff0c;今年又添飛書、剪映、微軟、思科... 這有一張網友整理的去年互聯網大廠裁員裁員信息表&#xff1a; 目前國內很多大廠都在裁員&#xff0c;非常現實、且越來越多 35 技術人&#xff0c;正在面臨這樣的問題&#xff0c;那么Web3.0 確實…

doker centos7安裝1

1.什么是doker Docker 是一個開源的應用容器引擎&#xff0c;它允許開發者將應用程序及其依賴項打包到一個可移植的容器中&#xff0c;然后發布到任何支持 Docker 的操作系統上&#xff0c;實現 “一次構建&#xff0c;到處運行”。 容器是一種輕量級的虛擬化技術&#xff0c…

自動化面試題

1、什么是測試套件測試套件是多個測試用例的集合。2、搭建接口自動化框架中&#xff0c;你遇到最大的難點是什么&#xff0c;以及怎么解決的?測試數據動態管理難點:接口依賴動態參數(如Token、訂單ID)&#xff0c;數據無法硬編碼.解決方案:使用關聯提取(如正則提取響應中的Tok…

【Linux】LVS(Linux virual server)環境搭建

一、LVS的運行原理1.1 LVS簡介LVS:Linux Virtual Server&#xff0c;負載調度器&#xff0c;內核集成&#xff0c;章文嵩&#xff0c;阿里的四層SLB(Server LoadBalance)是基于LVSkeepalived實現LVS 官網: http://www.linuxvirtualserver.org/ LVS 相關術語 VS: Virtual Server…

算法競賽備賽——【圖論】求最短路徑——Dijkstra

Dijkstra 用來計算從一個點到其他所有點的最短路徑的算法&#xff0c;是一種單源最短路徑算法。也就是說&#xff0c;只能計算起點只有一個的情況。Dijkstra的時間復雜度是O (|v|^2)&#xff0c;它不能處理存在負邊權的情況。 鄰接矩陣存圖 #include<iostream> using …

影刀 RPA:批量修改 Word 文檔格式,高效便捷省時省力

在日常辦公和文檔處理中&#xff0c;Word 文檔格式的統一和規范是許多企業和個人用戶的重要需求。無論是撰寫報告、制作提案&#xff0c;還是整理資料&#xff0c;都需要確保文檔格式的一致性。然而&#xff0c;手動修改多個 Word 文檔的格式不僅耗時費力&#xff0c;還容易因疏…

GitLab 社區版 10.8.4 安裝、漢化與使用教程

一、GitLab 安裝 GitLab 提供了集成所需軟件的 RPM 包&#xff0c;簡化了安裝流程。我們選擇安裝社區版&#xff08;CE&#xff09;10.8.4&#xff0c;可通過官方網站或國內鏡像源&#xff08;如清華鏡像&#xff09;獲取安裝包。 1. 準備工作 首先創建工具目錄并進入&#…