什么是nacos
Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。
官方网址:http://nacos.io
nacos作为注册中心
1.预备环境:
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8+;下载 & 配置。
- Maven 3.2.x+;下载 & 配置。
2.Nacos下载:
您可以从 最新稳定版本 下载 nacos-server-$version.zip
包。
3.启动服务
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
Windows
启动命令(standalone代表着单机模式运行,非集群模式):
cmd startup.cmd -m standalone
4.服务注册&发现和配置管理
服务注册
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
服务发现
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'
发布配置
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"
5.关闭服务器
Linux/Unix/Mac
sh shutdown.sh
Windows
cmd shutdown.cmd
或者双击shutdown.cmd运行文件。
程序启动默认占用的端口是8848(珠穆朗玛峰的高度),我们可以对端口进行修改,用编辑器打开bin目录下的startup.cmd文件 添加一行代码
set "JAVA_OPT=%JAVA_OPT% --server.port=9090
还可以在conf文件下的application.properties中添加
server.port=9090
来修改端口,也可以在该文件下指定数据源,方法和springboot中配置一样(单机模式模式下默认连接的是javaDB),该文件夹下 nacos-logback.xml自然是修改nacos日志输出规则的。
启动服务后访问下面的地址,nacos图形化界面
http://127.0.0.1:8848/nacos/index.html
账号:nacos
密码:nacos
新建一个配置:
新建完成,发布,返回到配置管理界面:
配置相关命名释义:
Namespace 环境:代表不同环境,如开发、测试、生产环境。
Group 项目:代表某项目,如XX医疗项目、XX电商项目。
DataId 工程:每个项目下的若干工程,每个配置(DataId)是一个工程的主配置文件。
配置获取的两种方式:
1)bootstrap.properties文件获取;
2)java代码方式获取。
配置获取:
bootstrap.properties文件获取:
先新建一个springboot项目,添加如下依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.0.RELEASE</version>
</dependency>
在resource目录下加入 bootstrap.properties文件 并添加配置中心相关信息
bootstrap.properties:
#服务名
spring.application.name=my_nacos
# 配置中心url
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# nacos命名空间
spring.cloud.nacos.config.namespace=public
# nacos组
spring.cloud.nacos.config.group=DEFAULT_GROUP
# nacos配置文件扩展名
spring.cloud.nacos.config.file-extension=yaml
java代码方式获取:
// 初始化配置服务
String serverAddr = "127.0.0.1:8848";
String namespace = "ee247dde-d838-425c-029dab26232f";// 开发环境
String group = "DEFAULT_GROUP";// 默认组
String dataId = "nacos-simple-demo.yml";
Properties properties = new Properties();
properties.put("serverAddr", serverAddr);
properties.put("namespace", namespace);
ConfigService configService = NacosFactory.createConfigService(properties);
// 获取配置
String content = configService.getConfig(dataId, group, 5000);
System.out.println(content);
// String dataId, String group, Listener listener
configService.addListener(dataId, group, new Listener() {
public Executor getExecutor() {
return null;
}
// 当配置发生变化时获取通知
public void receiveConfigInfo(String s) {
System.out.println(s);
}
})