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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

Nacos服务的注册,服务的调用,修改配置文件自动刷新和命名空间

發(fā)布時(shí)間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nacos服务的注册,服务的调用,修改配置文件自动刷新和命名空间 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、nacos配置中心的配置

使用nacos作為配置中心,不需要再到遠(yuǎn)端倉(cāng)庫(kù)拉取配置文件。
詳細(xì)的nacos控制臺(tái)配置參見(jiàn)官方鏈接

二、服務(wù)的注冊(cè)

  • 創(chuàng)建項(xiàng)目并引入依賴
  • <!--引入nacos client的依賴--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
  • 配置注冊(cè)地址
  • server.port=8789 #指定當(dāng)前服務(wù)端口 spring.application.name=nacosclient#指定服務(wù)名稱 spring.cloud.nacos.server-addr=localhost:8848#指定nacos服務(wù)地址 spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr} #指定注冊(cè)中心地址 management.endpoints.web.exposure.include=*#暴露所有web端點(diǎn)
  • 加入啟動(dòng)服務(wù)注冊(cè)注解
  • @SpringBootApplication @RefreshScope //實(shí)現(xiàn)nacos自動(dòng)配置刷新 @EnableDiscoveryClient public class Application {public static void main(String[] args) {SpringApplication.run(Configclient9066Application.class, args);} }
  • 查看nacos的服務(wù)列表
  • 已經(jīng)注冊(cè)到nacos上

    三、服務(wù)的調(diào)用(基于OpenFeign)

    參考另一篇文章

    四、修改配置文件自動(dòng)刷新

    我們知道,以前基于springBus和git遠(yuǎn)程倉(cāng)庫(kù)的文件配置,如果配置文件有修改,我們都要手動(dòng)發(fā)送一個(gè)refresh請(qǐng)求,手動(dòng)刷新,而使用nacos作為配置中心,可以做到修改配置文件時(shí)自動(dòng)刷新配置。默認(rèn)情況下nacos已經(jīng)實(shí)現(xiàn)了自動(dòng)配置刷新功能,如果需要刷新配置直接在控制器中加入@RefreshScope注解即可。

    1.控制器加入@RefreshScope

    @RestController @RefreshScope //實(shí)現(xiàn)nacos自動(dòng)配置刷新 @Slf4j public class TestController {@Value("${user.name}")private String name;@GetMapping("/test/test")public String test(){log.info("當(dāng)前獲取配置中name為: [{}]",name);return "當(dāng)前獲取配置中name為:"+name;} }
  • 配置文件告訴程序到遠(yuǎn)程nacos服務(wù)器拉取配置信息
  • #nacos服務(wù)器鏈接 spring.cloud.nacos.server-addr=http://xxx.xxx.xxx.xxx:8848 spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.server-addr} #設(shè)置group spring.cloud.nacos.config.group=DEFAULT_GROUP #服務(wù)名 spring.application.name=config spring.profiles.active=prod #配置文件格式 spring.cloud.nacos.config.file-extension=properties

    nacos配置文件:


    訪問(wèn):http://localhost:9066/test/test

    修改nacos配置文件

    再次訪問(wèn):

    這樣就實(shí)現(xiàn)了自動(dòng)刷新

    五、命名空間

    namespace命名空間是nacos針對(duì)于企業(yè)級(jí)開(kāi)發(fā)設(shè)計(jì)用來(lái)針對(duì)于不同環(huán)境的區(qū)分,比如正在企業(yè)開(kāi)發(fā)時(shí)有測(cè)試環(huán)境,生產(chǎn)環(huán)境,等其他環(huán)境,因此為了保證不同環(huán)境配置實(shí)現(xiàn)隔離,提出了namespace的概念,默認(rèn)在nacos中存在一個(gè)public命名空間所有配置在沒(méi)有指定命名空間時(shí)都在這個(gè)命名空間中獲取配置,在實(shí)際開(kāi)發(fā)時(shí)可以針對(duì)于不能環(huán)境創(chuàng)建不同的namespace空間。默認(rèn)空間不能刪除!
    一般來(lái)說(shuō),對(duì)于命名空間,我們有兩種分配形式:

    • 第一種:項(xiàng)目名稱作為命名空間,服務(wù)名稱作為group,dataid用來(lái)區(qū)分不同的生產(chǎn)環(huán)境
    • 第二種:生產(chǎn)環(huán)境作為命名空間,項(xiàng)目名作為group,dataid用來(lái)區(qū)分不同的服務(wù)名稱

    筆者在這里建議使用第二種,使用方式如下:

  • 命名空間,如下:筆者建立了3個(gè)命名空間,分別用于部署,開(kāi)發(fā)和測(cè)試環(huán)境,對(duì)應(yīng)的配置如下:


    可以看到筆者·分別配置了prod環(huán)境下,app1和app2兩個(gè)不同的項(xiàng)目的服務(wù),也配置了dev環(huán)境下,app1和app2兩個(gè)不同的項(xiàng)目的服務(wù)。注意:users-dev、products-dev等配置文件的前綴,一定要與yaml中配置的服務(wù)名稱一致。#Nacos 默認(rèn)會(huì)在啟動(dòng)的時(shí)候去配置中心上讀取名為
  • ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}文件

    大致的遠(yuǎn)程配置信息如下:

  • 引用不同的命名空間
    • 測(cè)試類
    @RestController @RefreshScope //實(shí)現(xiàn)nacos自動(dòng)配置刷新 @Slf4j public class TestController {@Value("${user.name}")private String name;@GetMapping("/test/test")public String test(){log.info("當(dāng)前獲取配置中name為: [{}]",name);return "當(dāng)前獲取配置中name為:"+name;} }
    • 配置文件bootstrap.properties
    # config server addr spring.cloud.nacos.server-addr=http://xxx.xxx.xxx.xxx:8848 spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.server-addr}#prod命名空間 spring.cloud.nacos.config.namespace=1238cda6-4a25-45ef-8945-d2323d77db53 #dev命名空間 #spring.cloud.nacos.config.namespace=23eaa036-ff00-4888-b411-cd0f483318a7#切換不同的項(xiàng)目 spring.cloud.nacos.config.group=app2#切換不同的微服務(wù) spring.application.name=users#切換不同的環(huán)境 spring.profiles.active=prod#切換不同的配置文件后綴 spring.cloud.nacos.config.file-extension=properties

    訪問(wèn):localhost:9092/test/test

    接下來(lái)只要在配置文件中,切換不同的環(huán)境,不同的項(xiàng)目,不同的服務(wù),就能得到不同的配置參數(shù)。

    六、將服務(wù)所有配置移至nacos

    以配置gateway為例:

    • properties方式
    # config server addr spring.cloud.nacos.server-addr=http://xxx:8848 spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.server-addr} #Nacos 默認(rèn)會(huì)在啟動(dòng)的時(shí)候去配置中心上讀取名為 #${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.f#ile-extension}文件 #prod命名空間 spring.cloud.nacos.config.namespace=8fcc7735-0589-401b-bf38-b791c21f52d9 spring.cloud.nacos.discovery.namespace=8fcc7735-0589-401b-bf38-b791c21f52d9 #切換組(不同的app) spring.cloud.nacos.config.group=GATEWAY_TEST_GROUP #服務(wù)名稱 spring.application.name=gateway #切換不同的生產(chǎn)環(huán)境 spring.profiles.active=dev #指定的配置文件格式 spring.cloud.nacos.config.file-extension=yaml spring.cloud.nacos.config.enabled=true
    • yml方式(注意discovery和config都要配置addr和namespace)
    spring:application:name: gatewayprofiles:active: devcloud:nacos:config:namespace: "8fcc7735-0589-401b-bf38-b791c21f52d9"group: "GATEWAY_TEST_GROUP"file-extension: yamlenabled: trueserver-addr: xxx:8848discovery:namespace: "8fcc7735-0589-401b-bf38-b791c21f52d9"server-addr: xxx:8848

    遠(yuǎn)程nacos的配置文件:

    這樣以后再配合nacos的配置自動(dòng)刷新功能,就可以比較方便地修改項(xiàng)目配置了

    總結(jié)

    以上是生活随笔為你收集整理的Nacos服务的注册,服务的调用,修改配置文件自动刷新和命名空间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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