1. 概述:
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos = Eureka + Config + Bus。
1.1 能干嘛:
替代Eureka做服务注册中心,替代Config做服务配置中心
1.2 安装nacos:
官网:https://nacos.io/zh-cn/
GitHub:https://github.com/alibaba/Nacos
官方文档:https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html
2. Nacos作为注册中心的使用
2.1 基于Nacos的服务提供者:
- 创建9001项目:

- 添加pom文件:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- yml文件:
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: 10.211.55.17:8848 #配置的Nacos地址(本机的写localhost:8848,服务器的写IP地址)
management:
endpoints:
web:
exposure:
include: '*'
- 主启动类添加
@EnableDiscoveryClient注解 - 进行测试:

- 参照9001,新建9002项目,进行测试:


2.2 基于Nacos的服务消费者:
新建消费者83,新建的步骤不多说,参照9001

测试83调用nacos-payment-provider服务:


经过测试可以看到nacos是支持负载均衡的,这是因为里面集成了ribbon。

3. 各种注册中心的比较:


3.1 Nacos支持CP和AP的切换

4. Nacos作为配置中心的使用:
4.1 基础配置

4.1.1 新建模块3377
4.1.2 添加pom依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
4.1.3 添加yml文件:

- bootstrap.yml中:
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: 10.211.55.17:8848 #Nacos服务注册中心地址(本机的写localhost)
config:
server-addr: 10.211.55.17:8848 #Nacos作为配置中心地址(本机的写localhost)
file-extension: yml #指定yml格式配置
- application.yml中
spring:
profiles:
active: dev #表示开发环境
4.1.4 添加主启动类
4.1.5 controller编写,添加@RefreshScope注解
此注解是spring cloud原生注解,来实现配置自动更新
@RefreshScope //支持Nacos的动态刷新功能
@RestController
public class ConfigClientController {
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo(){
return configInfo;
}
}
4.1.6 在nacos中添加配置信息
官网:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
配置信息格式:即项目如何找到nacos中的配置文件


#${prefix}-${spring.profile.active}.${file-extension}
# ${spring.application.name}-${spring.profile.active}.${file-extension}
# nacos-config-client-dev.yml

在nacos中添加配置信息


注意:这里的dataId一定是yaml,不然会报错找不到。
4.1.7 测试

修改nacos中配置内容,重新访问:
4.2 分类配置

4.2.1 问题:


4.2.2 图像化管理:

4.2.3 Namespace+Group+DataID关系

默认情况:

4.3 三种方案加载配置:

4.3.1 Data ID方案:

- 新建一个test的配置:

- 设置application中的active为test,根据公式,就会读取我们新建的test的配置

- 测试:略
4.3.2 Group方案:

Group默认为DEFAULT_GROUP
添加一个新的配置,设置组为DEV_GROUP
再添加一个配置,设置组为TEST_GROUP

在yml中添加group

测试:略
4.3.3 namespace方案:

Namespace默认有一个public。(不可删除)
新建命名空间:


给dev命名空间新增四个DataId,分三个Group

在bootstrap.yml的config里添加
namespace: xx
测试:略
5. Nacos集群及持久化:
官网说明:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
5.1 单机存在的问题
首次使用nacos时,并没有持久化我们的配置,但是配置还是保存下来了,这是因为nacos有个内置的切入式数据库。
5.2 持久化配置
配置mysql作为nacos的持久化数据库

5.3 集群配置步骤:
docker安装查看:
https://blog.csdn.net/qq_36903261/article/details/106932489
