Nacos简介
Nacos 是构建以“服务”为中心的现代应用架构,如微服务范式、云原生范式等服务基础设施。聚焦于发现、配置和管理微服务。Nacos提供一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。敏捷构建、交付和管理微服务平台。
关键特性
- 动态配置服务
- 服务发现和服务健康监测
- 动态 DNS 服务
- 服务及其元数据管理
专业术语介绍
- 命名空间
- 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。
- 配置集
- 一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。
- 配置集 ID
- Nacos 中的某个配置集的ID。配置集ID是组织划分配置的维度之一。DataID通常用于组织划分系统的配置集。
- 配置分组
- Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串对配置集进行(Group)分组,从而区分 Data ID 相同的配置集。
- 配置快照
- Nacos 的客户端 SDK 会在本地生成配置的快照。当客户端无法连接到 Nacos Server 时,可以使用配置快照显示系统的整体容灾能力。
- 服务注册
- 存储服务实例和服务负载均衡策略的数据库。
- 服务发现
- 使用服务名对服务下的实例的地址和元数据进行探测,并以预先定义的接口提供给客户端进行查询。
- 元数据
- Nacos数据(如配置和服务)描述信息,如服务版本、权重、容灾策略、负载均衡策略等。
Nacos环境搭建
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
64 bit OS,支持 Linux/Unix/Mac/Windows
64 bit JDK 1.8+;下载 & 配置。
Maven 3.2.x+;下载 & 配置。
这里直接下载打包好的文件,也可以下载源码自己打包。
https://github.com/alibaba/nacos/releases.
拉到下面找到下载文件:nacos-server-1.1.4.zip
初始化mysql数据库,数据库初始化文件:nacos-mysql.sql(在conf目录)
修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。
保存启动。
启动环境
- 启动文件地址:nacos\bin
- 启动文件:startup.cmd
- 关闭文件:shutdown.cmd
启动登录Nacos
账户密码默认:nacos/nacos ;首页效果如下:
在页面上新建一个配置,点击加号
这时候数据库会多一条记录
整合SpringBoot整合Nacos
核心依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
YML配置
spring:
# 项目名称,默认情况下Nacos中配置需要和这个保持一致
application:
name: DateBase #对应Data Id,不然报错获取不到配置文件值
cloud:
nacos:
# 配置
config:
# 开发空间名称
namespace: a23fb97a-9b56-4398-956e-51efe18421aa
# Nacos地址
server-addr: localhost:8848
# Nacos用户名
username: nacos
# Nacos用户密码
password: nacos
# Nacos文件后缀
file-extension: yml
# Nacos分组-dev、test、prod获取不同的环境的配置必须配置分组
group: DEFAULT_GROUP
# 发布服务时需要加上这个,不然Nacos无法监听到
discovery:
# 开发空间名称
namespace: a23fb97a-9b56-4398-956e-51efe18421aa
# Nacos地址
server-addr: localhost:8848
server:
port: 8500
访问方式
@RefreshScope
@RestController
@RequestMapping("/demo")
public class NacosDemoController {
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.url}")
private String url;
@GetMapping("/getValue")
public String getValue(){
return "[url:"+url+",username: " + username + ", password: " + password + "]";
}
}
最终的结果: