谷粒商城學習筆記-23-分布式組件-SpringCloud Alibaba-Nacos配置中心-簡單示例

之前已經學習了使用Nacos作為注冊中心,這一節學習Nacos另外一個核心功能:配置中心

一,Nacos配置中心簡介

Nacos是一個易于使用的平臺,用于動態服務發現和配置管理。作為配置中心,Nacos提供了以下核心功能和優勢:

  1. 動態配置管理:Nacos允許用戶在不重啟服務的情況下動態地修改和推送配置信息,實現配置的實時更新。

  2. 配置集中存儲:Nacos提供了一個中心化的配置存儲,使得配置信息易于管理和維護,避免了配置分散在不同環境和系統中的問題。

  3. 配置版本控制:Nacos支持配置的版本控制,可以追蹤配置的變更歷史,方便進行回滾操作。

  4. 配置共享:Nacos允許跨服務共享配置,提高配置的復用性,減少冗余。

  5. 配置隔離:通過命名空間(Namespace)的概念,Nacos支持不同環境(如開發、測試、生產)的配置隔離,確保環境間的配置不會相互干擾。

  6. 配置監聽和推送:Nacos提供了配置監聽功能,當配置發生變化時,可以主動推送更新到客戶端,實現配置的熱更新。

  7. 安全性:Nacos支持配置的訪問控制和權限管理,確保只有授權用戶才能訪問或修改配置。

  8. 多環境支持:Nacos支持多種部署環境,可以滿足不同規模和需求的配置管理。

  9. 與Spring Cloud集成:Nacos與Spring Cloud緊密集成,提供了spring-cloud-starter-alibaba-nacos-config等組件,簡化了在Spring Cloud應用中使用Nacos配置中心的過程。

  10. 易用性:Nacos提供了友好的用戶界面,使得配置的查看、修改和管理變得直觀簡單。

Nacos作為配置中心,適用于微服務架構、云原生應用以及需要動態配置管理的分布式系統。通過集中管理配置,Nacos幫助企業提高了配置管理的效率和安全性,同時也簡化了開發和運維的工作。

二,Nacos配置中心的使用說明

使用說明在官方文檔上有詳細記錄,點擊查看文檔https://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html。

1,聲明對配置中心的Maven依賴

要使用配置中心首先要添加依賴。

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

在谷粒商城這個項目中,因為所有服務都要使用Nacos配置中心,所以在common模塊添加這個依賴

2,在 bootstrap.properties 中配置 Nacos server 的地址和應用名

在工程或者模塊的resource目錄下,bootstrap.properties問中聲明Nacos服務器的地址和服務名稱。

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=gulimall-coupon

3,在Nacos配置列表界面創建配置文件

在這里插入圖片描述

點擊創建配置后,會有如下頁面。

在這里插入圖片描述

  • ① Data ID相當于文件名,要包含服務名,比如gulimall-coupon.properties
  • ② 配置文件類型,支持多種,對于微服務來講,一般是yaml或者properties
  • ③ 黑色框內是要填充的配置信息

Nacos Spring Cloud 中,Data Id 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默認為 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix來配置。
  • spring.profiles.active 即為當前環境對應的 profile,詳情可以參考 Spring Boot文檔。 注意:當 spring.profiles.active 為空時,對應的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
  • file-exetension 為配置內容的數據格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 propertiesyaml 類型。

三,測試

1,把配置信息放在工程里

我們先把信息放在工程的配置文件中,在coupon模塊的配置文件application.properties中配置如下信息:

coupon.user.name=lcy
coupon.age=22

在這里插入圖片描述

2,編寫測試代碼

在Controller中增加一個方法,使用配置文件中的配置信息。

	@Value("${coupon.user.name}")private String userName;@Value("${coupon.user.age}")private String userAge;@RequestMapping("test")public R test(){return R.ok().put("name", userName).put("age", userAge);}

注意上述代碼,我們是通過注解@Value將配置文件中的配置注入到類變量中,然后在方法中引用。

3,測試

啟動服務后,在瀏覽器中輸入以下地址。

http://localhost:7000/coupon/coupon/test

輸出如下,說明已經讀取了配置文件中的信息。
在這里插入圖片描述

4,把配置信息配置到配置中心

以優惠券服務為例進行配置。
在這里插入圖片描述

點擊配置文件列表右側編輯按鈕,進入編輯界面。

在這里插入圖片描述

注意,為了弄清楚配置中心配置文件和本地配置文件的區別和聯系,我們沒有刪除上一步本地的配置。

目前僅在配置中心配置了一項配置,這項配置在本地配置中也有,但值不一樣,本地配置是coupon.user.name=lcy,配置中心是coupon.user.name=lcy2

重啟服務后刷新瀏覽器,結果如下。

在這里插入圖片描述
顯然,name的值取自配置中心,而不是本地配置文件,說明配置中心的值會覆蓋本地配置文件的值

錯誤記錄

谷粒商城配置中心錯誤記錄

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

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

相關文章

微軟推出全新的學習網站 Microsoft Learn

微軟官方宣布推出全新的學習網站 Microsoft Learn&#xff0c;供開發人員學習 Microsoft 技術。 該網站包含所有 Microsoft 產品和服務(從 HoloLens 到 Azure)的技術文檔。提供了超過 80 小時的學習內容&#xff0c;涉及 Azure、Dynamics 365、PowerApps、Microsoft Flow 和 Po…

VSTO插件功能介紹-清除空行【進化過程】

大家看到的是完成的成果&#xff0c; 可能不知在其中&#xff0c;寫碼人的艱辛 今天的主要是記錄【進化過程】 用于自勉&#xff0c;與大家共勉&#xff0c;努力 文章中的代碼你可復制使用哦 想要的效果若用戶選擇了區域&#xff0c;選擇確定Button對此區域&#xff0c;進行清除…

代碼隨想錄算法訓練營Day64|拓撲排序(卡碼網117)、dijkstra樸素版

拓撲排序 117. 軟件構建 (kamacoder.com) 拓撲排序簡單的說是將一個有向圖轉為線性的排序。 它將圖中的所有結點排序成一個線性序列&#xff0c;使得對于任何的邊uv&#xff0c;結點u在序列中都出現在結點v之前&#xff0c;這樣的序列滿足圖中所有的前驅-后繼關系。 拓撲排…

vue 插槽 【slot】

文章目錄 默認插槽具名插槽作用域插槽 默認插槽 父組件中&#xff1a;<Category title"今日熱門游戲"><ul><li v-for"g in games" :key"g.id">{{ g.name }}</li></ul></Category> 子組件中&#xff1a;<…

9. 機器人數目

題目描述 本題為填空題&#xff0c;只需要算出結果后&#xff0c;在代碼中使用輸出語句將所填結果輸出即可。 少年宮新近郵購了小機器人配件&#xff0c;共有3類。 &#x1d434;A 類含有&#xff1a;88 個輪子&#xff0c;11 個傳感器&#xff1b; &#x1d435;B 類含有:…

深入理解基本數據結構:棧詳解

引言 在計算機科學中&#xff0c;數據結構是存儲、組織和管理數據的方式。棧是一種重要的線性數據結構&#xff0c;廣泛應用于各種編程場景。在這篇博客中&#xff0c;我們將詳細探討棧的定義、特點、操作及其在不同編程語言中的實現。 什么是棧&#xff1f; **棧&#xff08…

java動態代理的使用和代碼示例

文章目錄 1. 簡介2. 代碼3. 參考鏈接 1. 簡介 代理類在程序運行時創建的代理方式被成為動態代理。在靜態代理中&#xff0c;代理類&#xff08;RenterProxy&#xff09;是自己已經定義好了的&#xff0c;在程序運行之前就已經編譯完成。而動態代理是在運行時根據我們在Java代碼…

前端vue 實現取色板 的選擇

大概就是這樣的 一般的web端框架 都有自帶的 的 比如 ant-design t-design 等 前端框架 都是帶有這個的 如果遇到沒有的我們可以自己嘗試開發一下 簡單 的 肯定比不上人家的 但是能用 能看 說的過去 我直接上代碼了 其實這個取色板 就是一個input type 是color 的input …

CTF學習記錄(一)——Web基礎

目錄 Web基礎Web基礎常用工具ncat(網絡工具中的瑞士軍刀&#xff0c;功能齊全)curl(一個工作在命令行的發起HTTP請求的工具)BurpSuite(Web核心抓包工具)Hackbar插件SwitchyOmega 代理插件&#xff08;非常牛逼&#xff09;Wappalyzer 技術判斷插件EditThisCookie 插件Postman 接…

深入理解Spring Boot中的定時任務調度

深入理解Spring Boot中的定時任務調度 大家好&#xff0c;我是微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 1. Spring Boot中的定時任務概述 在現代應用程序開發中&#xff0c;定時任務調度是一項非常常見和重要的功能…

【計算機網絡03】不花錢怎么搭建一個網絡實驗室

使用GNS3和虛擬機搭建網絡實驗室 1、安裝抓包工具分析數據包2、定義和使用抓包篩選器3、安裝和配置GNS34、配置路由器和VPCS5、使用WireShark捕獲GNS3網絡數據包6、VMware創建虛擬機7、使用思科PacketTracer 1、安裝抓包工具分析數據包 官網安裝wireshark&#xff1a;https://…

python怎么判斷字符串以什么結尾

在python編輯器中新建一個data.py。 寫上自己的注釋。 然后新建一個變量testname。 利用endswith來判斷字符串是不是以“ar”結尾。 將結果打印出來。 選擇“run”->“run”。 運行該程序&#xff0c;如果是&#xff0c;就會返回true。

JavaScript-日期對象

日期對象 作用&#xff1a;用來表示時間的對象 獲取當前時間 const datenew Date();console.log(date);可以得到日期對象&#xff0c;里面的屬性有星期&#xff0c;年月日&#xff0c;時分秒 獲取指定時間 const datenew Date(2023-05-01);console.log(date); 獲取時間戳 時間…

PyTorch深度學習實戰(45)——強化學習

PyTorch深度學習實戰&#xff08;45&#xff09;——強化學習 0. 前言1. 強化學習基礎1.1 基本概念1.2 馬爾科夫決策過程1.3 目標函數1.4 智能體學習過程 2. 計算狀態值3. 計算狀態-動作值4. Q 學習4.1 Q 值4.2 Gym環境4.3 構建 Q 表4.4 探索-利用策略 小結系列鏈接 0. 前言 強…

悠律凝聲環開放式耳機體驗:強勁低音、高顏值設計

最近發現了一款潮酷的開放式耳機&#xff0c;不僅顏值抗打&#xff0c;更重要的是能在嘈雜的環境中提供給我一份寧靜的沉浸式音樂體驗&#xff0c;號稱是開放音頻中的重低音之王&#xff0c;它就是悠律凝聲環開放式耳機。 這款耳機無論其外觀設計、音質效果、性價比以及續航能力…

通勤數據:Comma2k19 數據集

A Commute in Data: The comma2k19 Dataset 通勤數據&#xff1a;Comma2k19 數據集 https://arxiv.org/pdf/1812.05752v1 Abstract— comma.ai presents comma2k19, a dataset of over 33 hours of commute in California’s 280 highway. This means 2019 segments, 1 minut…

js實現尋找數組中滿足某個條件的對象,以及找到下標后,在數組中插入某個對象

let ItemIndex fileList.findIndex((item) > { return item.xxx 你要找的屬性值 }); if(ItemIndex > -1){ // 代表找到了這個元素 } else { } 參考百度AI: 在JavaScript中&#xff0c;?可以使用splice()方法在指定位置插入一個或多個對象到數組…

npm、cnpm、pnpm、yarn的區別

npm, cnpm, pnpm, 和 yarn 都是 JavaScript 的包管理工具&#xff0c;用于自動化處理包的安裝、更新、配置和管理。它們之間的主要區別在于它們各自的實現方式、性能優化、以及一些特有的功能。 npm npm (Node Package Manager) 是 Node.js 的默認包管理器&#xff0c;也是最…

「媒體邀約」上海請媒體的費用

傳媒如春雨&#xff0c;潤物細無聲&#xff0c;大家好&#xff0c;我是51媒體網胡老師。 上海無疑是最具活動的城市之一&#xff0c;各種大大小小的論壇、發布會、展覽展會應接不暇&#xff0c;那么在上海做活動想邀請媒體進行宣傳報道&#xff0c;需要多少費用呢&#xff1a;…

Android --- 運行時Fragment如何獲取Activity中的數據,又如何將數據傳遞到Activity中呢?

1.通過 getActivity() 方法獲取 Activity 實例&#xff1a; 在 Fragment 中&#xff0c;可以通過 getActivity() 方法獲取當前 Fragment 所依附的 Activity 實例。然后可以調用 Activity 的公共方法或者直接訪問 Activity 的字段來獲取數據。 // 在 Fragment 中獲取 Activity…