一、相关资料
git地址:https://codechina.csdn.net/mirrors/alibaba/nacos
文档:https://nacos.io/en-us/docs/what-is-nacos.html
Nacos官网:https://nacos.io/zh-cn/index.html
二、概念
简介
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
特性
服务发现和服务健康监测
动态配置服务
动态 DNS 服务
服务及其元数据管理
三、快速开始
1. 下载启动
https://nacos.io/zh-cn/docs/quick-start.html
1.下载nacos
github下载方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
cd distribution/target/nacos-server-2.1.1/nacos/bin
2.启动和停止
cd distribution/target/nacos-server-2.1.1/nacos/bin
## standalone 单机版启动本地测试,不加墨认为集群启动
sh startup.sh -m standalone
sh shutdown.sh
3.验证
访问本地地址:http://localhost:8848/nacos/#/login
用户名和密码都是:nacos
2. 基于Spring Boot的配置管理整合
注:Spring Boot版本为 2.3.11.RELEASE ,刚开始版本太高会启动报错。
添加依赖
<!-- https://mvnrepository.com/artifact/com.alibaba.boot/nacos-config-spring-boot-starter -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.7</version>
</dependency>
注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本
修改配置
在 application.properties 中配置 Nacos server 的地址
# nacos配置中心地址
nacos.config.server-addr=127.0.0.1:8848
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
# 修改应用端口为8000
server.port=8000
启动类添加@NacosPropertySource
使用 @NacosPropertySource 加载 dataId 为 example 的配置源,并开启自动更新
@SpringBootApplication
@NacosPropertySource(dataId = "example", autoRefreshed = true)
public class NacosConfigApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApplication.class, args);
}
}
编写controller
使用@NacosValue 注解设置属性值。
package com.hzl.controller;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
/**
* @description
* @author: zhiLin
* @create: 2022-09-27 22:39
**/
@RequestMapping("/config")
@RestController
public class ConfigController {
@NacosValue(value = "${message:hello world}", autoRefreshed = true)
private String message;
@GetMapping("/message")
public String printMessage() {
System.out.println(LocalDateTime.now().toString() + " = " + message);
return String.format("current config message = %s", message);
}
}
启动 NacosConfigApplication,调用 curl http://localhost:8000/config/message,返回内容是 hello world。
通过调用 Nacos Open API 向 Nacos server 发布配置:dataId 为example,内容为message=true
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example&group=DEFAULT_GROUP&content=message=true"
再次访问 http://localhost:8000/config/message,此时返回内容为true,说明程序中的useLocalCache值已经被动态更新了。
或者nacos控制台修改配置信息发布,在浏览器中验证均没问题
nacos控制台配置:
说明
dataId格式
${prefix}-${spring.profile.active}.${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。