日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Nacos 入门教程

發(fā)布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nacos 入门教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一 、Nacos快速入門

  • 什么是 Nacos
    • Nacos 是阿里巴巴推出來的一個新開源項目,這是一個更易于構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺。

    • Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos
      提供了一組簡單易用的特性集,幫助您快速實現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。

    • Nacos 幫助您更敏捷和容易地構(gòu)建、交付和管理微服務(wù)平臺。 Nacos 是構(gòu)建以“服務(wù)”為中心的現(xiàn)代應(yīng)用架構(gòu)
      (例如微服務(wù)范式、云原生范式) 的服務(wù)基礎(chǔ)設(shè)施。

  • 為什么是Nacos
  • 常見的注冊中心:

  • Eureka(原生,2.0遇到性能瓶頸,停止維護)

  • Zookeeper(支持,專業(yè)的獨立產(chǎn)品。例如:dubbo)

  • Consul(原生,GO語言開發(fā))

  • Nacos

  • 相對于 Spring Cloud Eureka 來說,Nacos 更強大。
    Nacos = Spring Cloud Eureka + Spring Cloud Config + Bus
    Nacos 可以與 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config

    • 通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 實現(xiàn)配置的動態(tài)變更
    • 通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery實現(xiàn)服務(wù)的注冊與發(fā)現(xiàn)
  • 可以干什么
  • Nacos是以服務(wù)為主要服務(wù)對象的中間件,Nacos支持所有主流的服務(wù)發(fā)現(xiàn)、配置和管理。
    Nacos主要提供以下四大功能:

  • 服務(wù)發(fā)現(xiàn)和服務(wù)健康監(jiān)測

  • 動態(tài)配置服務(wù)

  • 動態(tài)DNS服務(wù)

  • 服務(wù)及其元數(shù)據(jù)管理

  • Nacos快速開始
  • 結(jié)構(gòu)圖:

    Nacos 依賴 Java 環(huán)境來運行。建議直接使用docker進行安裝。運行成功后,nacos默認在8848端口提供了一個web管理界面,如下:

    二 、Nacos注冊中心入門

    創(chuàng)建兩個工程,一個是nacos-provider(被調(diào)用者), 另一個是naocos-consumer(調(diào)用者)

    • nacos-provider

    添加nacos-provider的依賴

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.13.RELEASE</version><relativePath/> <!-- lookup parent from repository --> </parent><properties><java.version>1.8</java.version> </properties> <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><--服務(wù)發(fā)現(xiàn)依賴--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.1.2.RELEASE</version></dependency><!--服務(wù)配置依賴--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.1.2.RELEASE</version></dependency> </dependencies> <!--SpringCloud的依賴--> <dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Greenwich.SR5</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement>

    provider基本代碼

    @RestController public class ProviderController {@GetMapping("invoke")public String invoke() {return LocalTime.now() + " invoke;} }

    application.yml

    server:port: 8070 spring:application:name: nacos-providercloud:# nacos服務(wù)地址nacos:server-addr: 127.0.0.1:8848

    在啟動類上添加@EnableDiscoveryClient注解

    • nacos-consumer

    添加nacos-consumer依賴

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --> </parent> <properties><java.version>1.8</java.version> </properties> <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.1.2.RELEASE</version></dependency> </dependencies> <!--SpringCloud的依賴--> <dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Greenwich.SR5</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement>

    consumer基本代碼

    @RestController public class ConsummerController {@Autowiredprivate ProviderFeign providerFeign;@GetMapping("/test")public String test() {return providerFeign.invoke();} } @FeignClient("nacos-provider") public interface ProviderFeign {@GetMapping("invoke")String invoke(); }

    application.yml

    server:port: 8071 spring:application:name: nacos-consumercloud:# nacos服務(wù)地址nacos:server-addr: 127.0.0.1:8848

    在啟動類添加@EnableFeignClients,@EnableDiscoveryClient注解

    調(diào)用結(jié)果:

    三、Nacos入門配置中心

    在系統(tǒng)開發(fā)過程中,開發(fā)者通常會將一些需要變更的參數(shù)、變量等從代碼中分離出來獨立管理,以獨立的配置文件的形式存在。目的是讓靜態(tài)的系統(tǒng)工件或者交付物(如 WAR,JAR 包等)更好地和實際的物理運行環(huán)境進行適配。配置管理一般包含在系統(tǒng)部署的過程中,由系統(tǒng)管理員或者運維人員完成。配置變更是調(diào)整系統(tǒng)運行時的行為的有效手段。
    如果微服務(wù)架構(gòu)中沒有使用統(tǒng)一配置中心時,所存在的問題:

  • 配置文件分散在各個項目里,不方便維護

  • 配置內(nèi)容安全與權(quán)限

  • 更新配置后,項目需要重啟

  • nacos配置中心:系統(tǒng)配置的集中管理(編輯、存儲、分發(fā))、動態(tài)更新不重啟、回滾配置(變更管理、歷史版本管理、變更審計)等所有與配置相關(guān)的活動

    nacos與 Spring Cloud的整合:

    • 1.在 Nacos Spring Cloud 中,dataId 的完整格式如下:
    ${prefix}-${spring.profile.active}.${file-extension}
    • prefix 默認為所屬工程配置spring.application.name 的值(即:nacos-provider),也可以通過配置項 spring.cloud.nacos.config.prefix來配置;

    • spring.profile.active 即為當(dāng)前環(huán)境對應(yīng)的 profile,詳情可以參考 Spring Boot文檔。 注意:當(dāng)spring.profile.active 為空時,對應(yīng)的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}

    • file-exetension 為配置內(nèi)容的數(shù)據(jù)格式,可以通過配置項
      spring.cloud.nacos.config.file-extension 來配置。目前只支持 properties 和 yaml 類型;默認為 properties ;



    即 dataId 為 配置所屬工程的spring.application.name的值 + “.” + properties/yml;

    官方文檔:
    https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
    https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config

    • 2.配置內(nèi)容:項目中易變的內(nèi)容

    從配置中心讀取配置

    • 添加配置依賴:
    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.1.2.RELEASE</version> </dependency>

    版本說明 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
    在 bootstrap.yml中配置 Nacos server 的地址和應(yīng)用名

    spring:cloud:nacos:server-addr: 127.0.0.1:8848# 該配置影響統(tǒng)一配置中心中的dataId,之前已經(jīng)配置過application:name: nacos-provider

    注意:bootstrap.yml添加了spring.application.name,在appliation.yml不需要再添加;之所以需要配置 spring.application.name ,是因為它是構(gòu)成 Nacos 配置管理 dataId字段的一部分。在springboot工程中,bootstrap.properties的加載優(yōu)先級更高

    @RefreshScope @RestController public class ProviderController {@Value("${DevConfig}")private String devConfig;@GetMapping("invoke")public String invoke() {return LocalTime.now() + " invoke,devConfig:" + devConfig;} }

    調(diào)用結(jié)果:

    • 名稱空間切換環(huán)境(相當(dāng)于使用springcloud config時的git倉庫的作用)

    在實際開發(fā)中,通常有多套不同的環(huán)境(默認只有public),那么這個時候可以根據(jù)指定的環(huán)境來創(chuàng)建不同的= namespce,例如,開發(fā)、測試和生產(chǎn)三個不同的環(huán)境,那么使用一套 nacos 集群可以分別建以下三個不同的 namespace。以此來實現(xiàn)多環(huán)境的隔離;


      可以發(fā)現(xiàn)有四個名稱空間(不同的項目之間,可以使用同一個nacos服務(wù),只需要新建命名空間就可以,無須一個項目配套一個nacos服務(wù))`public(默認)以及我們自己添加的3個名稱空間(prod、dev、test),可以點擊查看每個名稱空間下的配置文件,當(dāng)然現(xiàn)在只有public下有一個配置。默認情況下,項目會到public下找 服務(wù)名.properties文件。接下來,在dev名稱空間中也添加一個nacos-provider.properties配置。這時有兩種方式:

  • 切換到dev名稱空間,添加一個新的配置文件。缺點:每個環(huán)境都要重復(fù)配置類似的項目

  • 直接通過clone方式添加配置,并修改即可(推薦)


  •   編輯  

    在服務(wù)提供方nacos-provider中切換命名空間,修改bootstrap.yml添加如下配置

    spring:cloud:nacos:config:namespace: 288ad42c-c8e0-4b92-b8df-7d7883ad8507

    namespace的值為:

    重啟服務(wù),調(diào)用結(jié)果:

    • 回滾配置
        
    • 加載多配置文件
        偶爾情況下需要加載多個配置文件。假如現(xiàn)在dev名稱空間下有三個配置文件:nacos-provider.properties、redis.properties、jdbc.properties




    nacos-provider.properties默認加載,怎么加載另外兩個配置文件?

    在bootstrap.yml文件中添加如下配置:

    spring:cloud:nacos:server-addr: 127.0.0.1:8848config:extension-configs:- refresh: truedata-id: redis.properties- refresh: truedata-id: jdbc.properties

    修改上面的代碼:
    注意該注解:@RefreshScope 是scopeName="refresh"的 @Scope

    @RefreshScope//實現(xiàn)nacos的自動刷新 @RestController public class ProviderController {@Value("${DevConfig}")private String devConfig;@Value("${jdbc.url}")private String jdbcUrl;@Value("${redis.url}")private String redisUrl;@GetMapping("invoke")public String invoke() {return LocalTime.now() + " invoke,devConfig:" + devConfig +",jdbcUrl:" + jdbcUrl + ",redisUrl:" + redisUrl;} }

    • 配置的分組

    在實際開發(fā)中,除了不同的環(huán)境外。不同的微服務(wù)或者業(yè)務(wù)功能,可能有不同的redis及mysql數(shù)據(jù)庫,也就說每個微服務(wù)項目可能會有相應(yīng)的開發(fā)環(huán)境,測試環(huán)境,預(yù)發(fā)環(huán)境,生產(chǎn)環(huán)境等;區(qū)分不同的環(huán)境我們使用名稱空間(namespace),區(qū)分不同的微服務(wù)或功能,使用分組(group)。也可以反過來使用,名稱空間和分組只是為了更好的區(qū)分配置,提供的兩個維度而已;

    新增一個redis.properties,所屬分組為nacos-provider:

    現(xiàn)在開發(fā)環(huán)境中有兩個redis.propertis配置文件,一個是默認分組(DEFAULT_GROUP),一個是provider組。默認情況下從DEFAULT_GROUP分組中讀取redis.properties,如果要切換到nacos-provider分組下的redis.properties,需要修改如下配置:

    spring:cloud:nacos:server-addr: 127.0.0.1:8848config:extension-configs:- refresh: truegroup: nacos-providerdata-id: redis.properties- refresh: truedata-id: jdbc.properties

    原文地址1:https://www.cnblogs.com/coder-zyc/p/12821732.html
    原文地址2:https://www.cnblogs.com/coder-zyc/p/12821777.html
    原文地址3:https://www.cnblogs.com/coder-zyc/p/12821932.html

    總結(jié)

    以上是生活随笔為你收集整理的Nacos 入门教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。