生活随笔
收集整理的這篇文章主要介紹了
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
spring.application.name=nacosclient
spring.cloud.nacos.server
-addr=localhost
:8848
spring.cloud.nacos.discovery.server
-addr=$
{spring.cloud.nacos.server
-addr
}
management.endpoints.web.exposure.include=*
加入啟動(dòng)服務(wù)注冊(cè)注解
@SpringBootApplication
@RefreshScope
@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
@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ù)器拉取配置信息
spring.cloud.nacos.server
-addr=http
://xxx.xxx.xxx.xxx
:8848
spring.cloud.nacos.config.server
-addr=$
{spring.cloud.nacos.server
-addr
}
spring.cloud.nacos.config.group=DEFAULT_GROUP
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)程配置信息如下:
引用不同的命名空間
@RestController
@RefreshScope
@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
;}
}
spring.cloud.nacos.server
-addr=http
://xxx.xxx.xxx.xxx
:8848
spring.cloud.nacos.config.server
-addr=$
{spring.cloud.nacos.server
-addr
}
spring.cloud.nacos.config.namespace=1238cda6
-4a25
-45ef
-8945
-d2323d77db53
spring.cloud.nacos.config.group=app2
spring.application.name=users
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為例:
# 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: gateway
profiles:active: dev
cloud:nacos:config:namespace: "8fcc7735-0589-401b-bf38-b791c21f52d9"group: "GATEWAY_TEST_GROUP"file-extension: yaml
enabled: 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ò),歡迎將生活随笔推薦給好友。