要注意和JDK的版本有无冲突,贼勾8坑,不行就换个低版本的nacos
zip下载地址
解压,进入bin目录(nacos\bin),编辑startup.cmd
设置为单机启动
rem set MODE="cluster" set MODE="standalone"
双击startup.cmd
启动nacos
账号密码都是nacos
至此nacos已经安装完成
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
引入依赖应该注意和SpringBoot版本的兼容性,否则启动会报错
由于 `Spring Boot 1 和 Spring Boot 2 在 Actuator 模块的接口和注解有很大的变更,且 spring-cloud-commons 从 1.x.x 版本升级到 2.0.0 版本也有较大的变更,因此我们采取跟 SpringBoot 版本号一致的版本:
package com.example.nacos.discovery; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class NacosDiscoveryApplication { public static void main(String[] args) { SpringApplication.run(NacosDiscoveryApplication.class, args); } }
bootstrap加载优先级高于application
spring: application: name: nacos-practise cloud: nacos: # 注册中心 discovery: server-addr: 127.0.0.1:8848 namespace: ${namespaceID}
nacos config可以动态读取配置文件的值
在Nacos-Server中新建配置,其中Data ID它的定义规则是:${prefix}-${spring.profile.active}.${file-extension}
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。spring.profile.active
即为当前环境对应的profile
,可以通过配置项spring.profile.active
来配置。file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
引入依赖同样需要注意和SpringBoot版本的兼容性
spring: application: name: nacos-practise profiles: active: practise cloud: nacos: # 配置中心 config: server-addr: 127.0.0.1:8848 namespace: ${namespaceID} prefix: ${spring.application.name} file-extension: yml #此处配置需要和 Data Id 配置的一致,即yaml-yaml;yml-yml group: DEFAULT_GROUP
通过DataId和profiles实现
在配置文件中指定spring.profiles.active = **
,然后在nocas客户端新建对应的${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
配置来区分不同的环境。
通过Group实现
为不同的环境新建不同的分组,然后在配置文件中指定spring.cloud.nacos.config.group=组名
,这样也可以实现不同环境的区分。
通过Namespace实现
这种方式是官方建议的方式,通过创建不同的命名空间使用不同的环境配置
使用@RefreshScope
动态刷新配置信息
当微服务数量很庞大时,将所有配置都书写到一个配置文件中,显然不是太合适。对此我们可以将配置按照功能的不同,拆分为不同的配置文件。
例如:
数据库配置:
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/mydb username: root password: 123456
redis配置:
spring: redis: database: 0
mybatis配置:
mybatis: mapper-locations: classPath:mybatis/mapper/*.xml configuration: log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl pagehelper: auto-dialect: mysql
此时在nacos中可以配置三个Data Id :datasource.yml、redis.yml、mybatis.yml
项目配置文件:
spring: application: name: nacos-practise profiles: active: practise cloud: nacos: # 配置中心 config: server-addr: 127.0.0.1:8848 namespase: ${namespaceID} prefix: ${spring.application.name} file-extension: yml group: DEFAULT_GROUP extension-configs: - data-id: datasource.yaml group: DEFAULT_GROUP # 默认为DEFAULT_GROUP refresh: true # 是否动态刷新,默认为false - data-id: redis.yaml group: DEFAULT_GROUP refresh: true - data-id: mybatis.yaml group: DEFAULT_GROUP refresh: true
配置的优先级
目前提供了三种配置能力从 Nacos 拉取相关的配置
spring.cloud.nacos.config.shared-configs[n].data-id
支持多个共享 Data Id 的配置spring.cloud.nacos.config.extension-configs[n].data-id
的方式支持多个扩展 Data Id 的配置当三种方式共同使用时,他们的一个优先级关系是:A < B < C