1.1 介绍
一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
其他相关产品 consul 等也要服务注册和管理的功能
Nacos 的关键特性:
1. 服务发现和服务健康监测
2. 动态配置服务
3. 动态 DNS 服务
4. 服务及其元数据管理
......
1.2 nacos生态
1.3 安装
推荐的稳定版本为1.4.2或2.0.1。
1.3.1 下载
准备工作:
1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
2. 64 bit JDK 1.8+;
3. Maven 3.2.x+;
github下载地址:https://github.com/alibaba/nacos.git
本次以1.3.2为例进行介绍,大家尽量选择稳定版本
bin : 命令夹
conf: 配置文件夹
data: 辅助数据文件夹
logs : 日志文件夹
target: 编译文件夹
1.3.2 启动
nacos有两种启动方式
- 单节点启动
- 集群启动 (修改以下两个文件)
- conf/cluster.conf
- conf/application.properties
- 修改配置文件
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos-conf?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
- 数据库文件导入
把conf文件夹下的mysql文件导入到创建好的数据库中,与步骤1的链接数据库保持一致
- nacos启动
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
ubuntu
bash startup.sh -m standalone
Windows
启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
1.3.3 web页面访问
默认用户名密码 是 nacos/nacos
----到这nacos就搭建完成了
1.4 web页面
下面主要介绍nacos的web页面
2. nacos集成
2.1 springboot集成
# 注意: 版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
项目初始化搭建,引入jar包
<!--引入nacos配置包 读取nacos上配置文件需要这个包-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.1</version>
</dependency>
<!--引入nacos服务注册包-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.1</version>
</dependency>
<!--引入nacos-client包 个别需要加 不加会报nacos api的错-->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>0.6.2</version>
</dependency>
ps: 注意 nacos-client的版本与上面nacos-config的有个对应关系
初始化项目
@SpringBootApplication
public class CloudNacosApplication {
@NacosInjected
private NamingService namingService;
@Value("${server.port}")
private int serverPort;
@Value("${spring.application.name}")
private String applicationName;
// 现在采用原生的nacos+springboot 需要自己手动注册到nacos上 后期可以使用ali的nacos包,使用注解@EnableDiscoveryClient
@PostConstruct
public void registerInstance() throws NacosException {
namingService.registerInstance(applicationName, "127.0.0.1", serverPort);
}
public static void main(String[] args) {
SpringApplication.run(CloudNacosApplication.class, args);
}
}
# 服务注册名 单例名称 唯一
spring:
application:
name: cloud-nacos
# 端口
server:
port: 8080
# 服务注册地址 nacos地址
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
注册服务,启动项目去nacos上查看服务已经注册
读取配置文件 测试类如下,nacos配置文件如下
@RestController
@NacosPropertySource(dataId = "huhy-dev",autoRefreshed = true)
public class NacosConfiigController {
@NacosValue(value = "${huhy.username:yang}",autoRefreshed = true)
private String username;
/**
* 测试nacosvalue获取配置文件属性
* @return
*/
@GetMapping("/getUsername")
public String getUserName(){
return "hello "+ username;
}
}
接口测试
## 注意 先了解,后期介绍nacos+springcloud的时候详细解析
1. @NacosValue 和 @Value的注解区别
2. @RefreshScope