1、积分中Nacos用了几个节点?
2、SpringCloud那个服务模块和Nacos通信?微服务如何从Nacos去注册和读取信息?底层是如何通信的?
微服务如何注册信息进Nacos?
(1)在pom.xml中添加nacos的依赖
<!--nacos客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
(2) 在主类上添加@EnableDiscoryClient注解
@SpringBootApplication
@EnableDiscoveryClient
public class ProductApplication
(3)在application.yml中添加nacos服务的地址
spring:
# 服务名称必须带上,不然nacos服务列表中没有,也不会有注册成功的信息
application:
name: service-product
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
- bootstrap.yml(bootstrap.properties)用来在程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等;
- application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。
所以建议:若要在Nacos中管理配置文件,服务中直接使用bootstrap.yml(bootstrap.properties)来放nacos的配置
(4)启动服务,观察Nacos的控制面板中是否有注册进来的商品微服务
微服务如何读取信息?
(1)pom文件
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
(2) YML
Nacos 同SpringCloud - config 一样,在项目初始化时,要保证先从配置中心进行配置拉取。拉取配置之后,才能保证项目的正常运行。
bootStrap.yaml
# nacos配置
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
group: DEV_GROUP
namespace: 7d8f0f5a-6a53-4785-9686-dd460158e5d4
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yaml
# nacos-config-client-test.yaml ----> config.info
application.yml
spring:
profiles:
active: dev # 表示开发环境
#active: test # 表示测试环境
#active: info
(3)主启动
package com.atguigu.springcloud.alibaba;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377 {
public static void main(String[] args) {
SpringApplication.run(NacosConfigClientMain3377.class,args);
}
}
(4)业务类
package com.atguigu.springcloud.alibaba.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope //支持Nacos的动态刷新功能
public class ConfigClientController {
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo(){
return configInfo;
}
}
(5)在Nacos中添加配置信息
理论
Nacos中的dataid的组成格式及与SpringBoot配置文件中的匹配规则
实操
确定DataId
配置新增
Nacos界面配置对应
历史配置