1、积分中Nacos用了几个节点?

公司内部部署

2、SpringCloud那个服务模块和Nacos通信?微服务如何从Nacos去注册和读取信息?底层是如何通信的?

微服务如何注册信息进Nacos?

(1)在pom.xml中添加nacos的依赖

  1. <!--nacos客户端-->
  2. <dependency>
  3. <groupId>com.alibaba.cloud</groupId>
  4. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  5. </dependency>

(2) 在主类上添加@EnableDiscoryClient注解

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. public class ProductApplication

(3)在application.yml中添加nacos服务的地址

  1. spring:
  2. # 服务名称必须带上,不然nacos服务列表中没有,也不会有注册成功的信息
  3. application:
  4. name: service-product
  5. cloud:
  6. nacos:
  7. discovery:
  8. 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

微服务如何读取信息?

(1)pom文件

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  4. </dependency>

(2) YML

Nacos 同SpringCloud - config 一样,在项目初始化时,要保证先从配置中心进行配置拉取。拉取配置之后,才能保证项目的正常运行。
bootStrap.yaml

  1. # nacos配置
  2. server:
  3. port: 3377
  4. spring:
  5. application:
  6. name: nacos-config-client
  7. cloud:
  8. nacos:
  9. discovery:
  10. server-addr: localhost:8848 #Nacos服务注册中心地址
  11. config:
  12. server-addr: localhost:8848 #Nacos作为配置中心地址
  13. file-extension: yaml #指定yaml格式的配置
  14. group: DEV_GROUP
  15. namespace: 7d8f0f5a-6a53-4785-9686-dd460158e5d4
  16. # ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
  17. # nacos-config-client-dev.yaml
  18. # nacos-config-client-test.yaml ----> config.info

application.yml

  1. spring:
  2. profiles:
  3. active: dev # 表示开发环境
  4. #active: test # 表示测试环境
  5. #active: info

(3)主启动

  1. package com.atguigu.springcloud.alibaba;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  5. @EnableDiscoveryClient
  6. @SpringBootApplication
  7. public class NacosConfigClientMain3377 {
  8. public static void main(String[] args) {
  9. SpringApplication.run(NacosConfigClientMain3377.class,args);
  10. }
  11. }

(4)业务类

  1. package com.atguigu.springcloud.alibaba.controller;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.cloud.context.config.annotation.RefreshScope;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. @RestController
  7. @RefreshScope //支持Nacos的动态刷新功能
  8. public class ConfigClientController {
  9. @Value("${config.info}")
  10. private String configInfo;
  11. @GetMapping("/config/info")
  12. public String getConfigInfo(){
  13. return configInfo;
  14. }
  15. }

(5)在Nacos中添加配置信息

1、Nacos中的匹配规则

理论

Nacos中的dataid的组成格式及与SpringBoot配置文件中的匹配规则

实操

确定DataId
配置新增
Nacos界面配置对应
历史配置
面试题 - 图2

底层是如何进行通信的?