Nacos服务注册和配置中心

157 阅读1分钟

一.基本简介

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.application.name{spring.application.name}-{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

  1. 通过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.application.name{spring.application.name}-{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