Nacos + SpringCloud配置中心
Nacos简介
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos特性
服务发现和服务健康监测
动态配置服务
动态 DNS 服务
服务及其元数据管理
Nacos配置模型
Namespace:用于不同环境配置隔离(开发、测试。。。)
DataId:配置集,一个工程下一个DataId(配置文件)
Group:一个项目一个组
public是默认的Namespace
Nacos 快速开始
Nacos依赖Java环境,先准备好Java环境
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8+;下载 & 配置。
- Maven 3.2.x+;下载 & 配置。
您可以从 最新稳定版本 下载 nacos-server-$version.zip 包。
Windows下启动
在Nacos所在目录下
startup.cmd -m standalone 单机运行,默认是集群
发布配置
cmd中执行
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
获取配置
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
发布后配置后,也可到http://127.0.0.1:8848/nacos下查看配置
Nacos+SpringCloud
在nacos 服务 配置一个文件,nacos-demo.yml
引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
创建bootstrap.properties
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 #nacos服务地址
spring.application.name=nacos-demo # 项目服务名
spring.cloud.nacos.config.namespace=14dbb2cf-e01a-426e-8c28-f9d384371962 #nacos命名空间
spring.cloud.nacos.config.group=dev # 组
spring.cloud.nacos.config.file-extension=yml #文件后缀
#拼接的 DataId = nacos-demo.yml
# ${spring.application.name}.${file.extension}
在启动类,简单测试
使用@Value("${person.name}")方式,远程获取配置信息
@SpringBootApplication
@RestController
public class NacosCloudApplication {
public static void main(String[] args) {
SpringApplication.run(NacosCloudApplication.class, args);
}
@Value("${person.name}")
private String name;
@Value("${person.age}")
private String age;
@GetMapping("/config")
public String getConfig() {
return name + age;
}
}
访问localhost:8080/config,如图,测试成功
扩展
Nacos功能
监听查询:nacos文件改动,立即推送到Client
登录管理:可以改动密码(nacos+mysql时能用)
如果想要自动登录,不输入账号密码:
去nacos–>config–>application.properties中修改配置,即可
spring.security.enabled=false
Nacos常用配置
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=nacos-demo
spring.cloud.nacos.config.namespace=14dbb2cf-e01a-426e-8c28-f9d384371962
spring.cloud.nacos.config.group=dev
spring.cloud.nacos.config.file-extension=yml
DataId扩展(优先级低于内部规则)
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].data-id=service1.yml
spring.cloud.nacos.config.extension-configs[1].group=DEFAULT_GROUP
spring.cloud.nacos.config.extension-configs[1].data-id=service2.yml
spring.cloud.nacos.config.extension-configs[1].refresh=true
#可以用spring.cloud.nacos.config.namespace 声明 命名空间
#extension-configs是一个List集合
#可以根据下标,选择连接多个配置文件,并且可以 直接声明group和dataId
#但是 优先级要低于 内部规则的DataId,
#[n] n的值越大,优先级越高
#refresh 是指 动态配置
spring.cloud.nacos.config.enabled=false,关闭配置,不去连接nacos