一、nacos配置中心的配置
使用nacos作為配置中心,不需要再到遠端倉庫拉取配置文件。
詳細的nacos控制臺配置參見官方鏈接
二、服務的注冊
創建項目并引入依賴
<!--引入nacos client的依賴
-->
<dependency><groupId>com
.alibaba
.cloud
</groupId
><artifactId>spring
-cloud
-starter
-alibaba
-nacos
-discovery
</artifactId
>
</dependency
>
配置注冊地址
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=*
加入啟動服務注冊注解
@SpringBootApplication
@RefreshScope
@EnableDiscoveryClient
public class Application {public static void main(String[] args
) {SpringApplication.run(Configclient9066Application.class, args
);}
}
查看nacos的服務列表
已經注冊到nacos上
三、服務的調用(基于OpenFeign)
參考另一篇文章
四、修改配置文件自動刷新
我們知道,以前基于springBus和git遠程倉庫的文件配置,如果配置文件有修改,我們都要手動發送一個refresh請求,手動刷新,而使用nacos作為配置中心,可以做到修改配置文件時自動刷新配置。默認情況下nacos已經實現了自動配置刷新功能,如果需要刷新配置直接在控制器中加入@RefreshScope注解即可。
1.控制器加入@RefreshScope
@RestController
@RefreshScope
@Slf4j
public class TestController {@Value("${user.name}")private String name
;@GetMapping("/test/test")public String test(){log
.info("當前獲取配置中name為: [{}]",name
);return "當前獲取配置中name為:"+name
;}
}
配置文件告訴程序到遠程nacos服務器拉取配置信息
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配置文件:
訪問:http://localhost:9066/test/test
修改nacos配置文件
再次訪問:
這樣就實現了自動刷新
五、命名空間
namespace命名空間是nacos針對于企業級開發設計用來針對于不同環境的區分,比如正在企業開發時有測試環境,生產環境,等其他環境,因此為了保證不同環境配置實現隔離,提出了namespace的概念,默認在nacos中存在一個public命名空間所有配置在沒有指定命名空間時都在這個命名空間中獲取配置,在實際開發時可以針對于不能環境創建不同的namespace空間。默認空間不能刪除!
一般來說,對于命名空間,我們有兩種分配形式:
- 第一種:項目名稱作為命名空間,服務名稱作為group,dataid用來區分不同的生產環境
- 第二種:生產環境作為命名空間,項目名作為group,dataid用來區分不同的服務名稱
筆者在這里建議使用第二種,使用方式如下:
命名空間,如下:筆者建立了3個命名空間,分別用于部署,開發和測試環境,對應的配置如下:
可以看到筆者·分別配置了prod環境下,app1和app2兩個不同的項目的服務,也配置了dev環境下,app1和app2兩個不同的項目的服務。注意:users-dev、products-dev等配置文件的前綴,一定要與yaml中配置的服務名稱一致。#Nacos 默認會在啟動的時候去配置中心上讀取名為
${spring.application.name}-
${spring.profile.active}.${spring.cloud.nacos.config.file-extension}文件
大致的遠程配置信息如下:
引用不同的命名空間
@RestController
@RefreshScope
@Slf4j
public class TestController {@Value("${user.name}")private String name
;@GetMapping("/test/test")public String test(){log
.info("當前獲取配置中name為: [{}]",name
);return "當前獲取配置中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
訪問:localhost:9092/test/test
接下來只要在配置文件中,切換不同的環境,不同的項目,不同的服務,就能得到不同的配置參數。
六、將服務所有配置移至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 默認會在啟動的時候去配置中心上讀取名為
#$
{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
#服務名稱
spring
.application
.name
=gateway
#切換不同的生產環境
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
遠程nacos的配置文件:
這樣以后再配合nacos的配置自動刷新功能,就可以比較方便地修改項目配置了
總結
以上是生活随笔為你收集整理的Nacos服务的注册,服务的调用,修改配置文件自动刷新和命名空间的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。