一.基本简介
1)是什么: 一种更易于构建云原生应用的动态服务发现、配置管理和服务端里平台。
2)能干啥: 替代Consul做服务注册中心,做服务配置中心和满足动态刷新广播通知
3)各种注册中心的比较
4)运行Nacos
startup.cmd -m standalone
5)访问地址: http://localhost:8848/nacos
二.Nacos Discovery服务注册中心
1.基于Nacos的服务提供者
1)pom
<dependencies>
*
*<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
*
*<dependency>
<groupId>com.atguigu.cloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
*
*<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
*
*<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
*
*<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<scope>provided</scope>
</dependency>
*
*<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2)yml
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
3)主启动
4)业务类
@RestController
public class PayAlibabaController
{****
@Value( "${server.port}" )
private String serverPort;
@GetMapping(value = "/pay/nacos/{id}" )
public String getPayInfo(@PathVariable( "id" ) Integer id)
{
return "nacos registry, serverPort: " + serverPort+ " \t id" +id;
}
}
2.基于Nacos的服务消费者
1)pom yml 等在尚硅谷的笔记有
3.Nacos作为配置中心的步骤
1.pom
<dependencies>
*
*<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
*
*<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
*
*<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</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-actuator</artifactId>
</dependency>
*
*<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.建立两个yml文件
1.bootstrap.yml
*# nacos配置
*spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos 服务注册 *中心地址
*config:
server-addr: localhost:8848 #Nacos作为 配置中心 *地址
*file-extension: yaml *#指定yaml格式的配置
**# nacos端配置文件DataId的命名规则是:
**# {spring.profile.active}.${spring.cloud.nacos.config.file-extension}
*# 本案例的DataID是:nacos-config-client-dev.yaml
2.application.yml
不同的环境应用不同的代码 dev prod test
server:
port: 3377
spring:
profiles:
active: dev *# 表示开发环境
**#active: prod # 表示生产环境
*#active: test # 表示测试环境
**
3.业务类
@RestController
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。*
*public class NacosConfigClientController
{
@Value( "${config.info}" )
private String configInfo;
@GetMapping( "/config/info" )
public String getConfigInfo() {
return configInfo;
}
}
4.在nacos中添加配置中心
在配置列表中就可以创建不同环境下的配置
5.Nacos数据模型之Namespace-Group-Datald
1.这主要是为了解决保证在指定环境启动时服务能正确读取到nacos上的相应配置文件
2.对这些微服务配置进行分组和命名空间管理
3.有三种方案加载配置
1.DataId方案:
1)默认空间public+默认分组DEFAULT_GROUP + 新建的DataId
- 通过spring.profile.active属性就可以进行多环境的配置文件读取
3)bootstartap:
# nacos 配置 第一种 : 默认空间 + 默认分组 + 新建 DataID*
*spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos *服务注册中心地址
*config:
server-addr: localhost:8848 #Nacos *作为配置中心地址
*file-extension: yaml # 指定 yaml *格式的配置
*# nacos 端配置文件 DataId *的命名规则是:
**# {spring.profile.active}.${spring.cloud.nacos.config.file-extension}
*# 本案例的 DataID 是 :nacos-config-client-dev.yaml
application:
server:
port: 3377
spring:
profiles:
*#active: dev # 表示开发环境
**active: test # 表示测试环境 // 在这里改变测试环境v
*#active: prod # 表示生产环境
**
2.Group方案:
1)1)默认空间public+默认分组PROD_GROUP + 新建的DataId
2.bootstrap: 配置多个 group: PROD_GROUP
3.Namespace方案:
1