Spring Cloud + Nacos 服务的注册和发现

nacos 入门参考文档

spring nacos 官网
https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/en-us/index.html#_spring_cloud_alibaba_nacos_discovery

nacos 官网
https://nacos.io/zh-cn/docs/quick-start.html

注册细节

在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 

注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。
目前只支持 properties 和 yaml 类型。
通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新


配置bootstrap.yml文件(bootstrap.yml的加载优先级比application.properties高)
想想如果我们要先读取nacos config 文件里面配置的变量, 用来作为启动spring boot 节点的一个必须的变量是不是就该先读nacos配置, 
然后在读取我们项目里面其他的配置
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.23.1:8848
      config:
        server-addr: 192.168.23.1:8848
        file-extension: yaml
        prefix: nacos-provider
        group: dev
        namespace: 08ca45fd-c38d-49cb-a1e4-620d2874eec2
  profiles:
    active: dev
management:
  endpoints:
    web:
      exposure:
        include: "*"
那么在nacos 里面需要创建nacos-provider-dev.yaml 文件来进行作为配置文件的载体
nacos-provider 是spring.application.name
dev 指的是spring.profiles.active 的profile 
yaml 是文件的类型   spring.cloud.nacos.config.file-extension
将这些合在一起就是 配置中心需要的配置文件的名称了

nacos 配置文件

例如我需要读取nacos 里面配置的端口的变量作为spring boot 启动的端口
server:
  port: ${server.port}
  
  
启动spring boot 后项目就是这个指定的端口号

nacos 访问的发现

加入pom 依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
boot 项目需要有 @EnableDiscoveryClient  和nacos 发现的地址配置
server:
  port: 8081
spring:
  application:
    name: nacos-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
配置完毕启动boot应该没啥大问题了    

nacos Feign

需要依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>