Nacos簡介
Nacos是阿里巴巴集團開發的一款開源平臺,用於配置/服務發現/服務管理,Nacos可以幫助我們很容易的構建雲本機應用程序和微服務架構。Nacos基本上支持現在所有類型的服務,比如說GRPC/Dubbo服務/SpringCloud Restful服務/Kubernetes服務。
作爲微服務開發人員都應該知道的,Eureka作爲服務註冊中心,總考慮到Eureka的閉源問題,Nacos的出現,程序員們就可以把服務註冊中心改爲Nacos了。
Nacos配置中心-QuickStart
首先增加依賴。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
在bootstrap.yml
中增加配置。注意一定要在bootstrap.yml
中配置。
spring:
cloud:
nacos:
config:
server-addr: localhost:8848 #配置中心地址
file-extension: yaml #配置文件後綴默認是properties
application:
name: nacos-demo
profiles:
active: dev
增加配置類NacosConfig
。@RefreshScope
註解用來動態更新Nacos中最新的配置。
@Data
@Component
@RefreshScope
public class NacosConfig {
@Value("${your.configuration}")
private String configuration;
}
測試類。
@RestController
public class TestController {
@Autowired
private NacosConfig nacosConfig;
@GetMapping("/hello")
public String hello() {
System.out.println("hello world");
return nacosConfig.getConfiguration();
}
}
我們再看下Nacos中的配置。
我們可以看到Data Id
需要與配置中的屬性保持一直,即spring.application.name-spring.profiles.active.file-extension
相同應用不同環境配置共享
只需要提取一個以 spring.application.name 命名的配置文件,然後將其所有環境的公共配置放在裏 面即可。例如:
可以被spring.application.name=nacos-demo
的所有服務共享。
不同微服務中間共享配置
有的時候我們需要將多個服務相同的配置信息設置成公用配置。例如:
Nacos提供兩種方式配置共享:
-
shared-dataids
spring: cloud: nacos: config: server-addr: localhost:8848 #配置中心地址 file-extension: yaml #配置文件後綴默認是properties # 共享配置的DataId,多個使用,分隔 # 越靠後,優先級越高 shared-dataids: common1.yaml refreshable-dataids: common1.yaml application: name: nacos-demo profiles: active: dev
-
ext-config
spring: cloud: nacos: config: server-addr: localhost:8848 #配置中心地址 file-extension: yaml #配置文件後綴默認是properties # 共享配置的DataId,多個使用,分隔 # 越靠後,優先級越高 #shared-dataids: common1.yaml #refreshable-dataids: common1.yaml ext-config: - data-id: common1.yaml group: DEFAULT_GROUP refresh: true application: name: nacos-demo profiles: active: dev
實例化數據庫
Nacos Server 默認使用的是內嵌的數據庫,生產環境建議修改使用 mysql 數據庫存儲配置信息。
在配置文件application.properties添加配置:
### If user MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://www.xm-fighting.com:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=xm
db.password=hw4372156
創建數據庫,在Nacos Server conf文件夾下,找到nacos-mysql.sql文件,導入創建的數據庫即可。