注册中心

  1. pom.xml
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

如果项目要使用 OpenFeign,这里有个坑要注意:No Feign Client for loadBalancing defined. Did you forget to include…

  1. application.yml
spring:  
  application:  
    name: gulimall-member # 当前服务的名称  
  cloud:  
    nacos:  
      discovery:  
        server-addr: 127.0.0.1:8848 # Nacos Server 地址
  1. 启动类

添加 @EnableDiscoveryClient 注解

@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {
    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }
}
  1. 在控制台可以看到服务信息

配置中心

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

注意

如果 Spring Boot 版本是 2.4. x,Spring Cloud 版本>=2020.0.2,需要引入 spring-cloud-starter-bootstrap(Spring Cloud 2020 bootstrap 配置文件失效

<dependency>
<groupId>org. springframework. cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
  1. bootstrap. properties
spring.application.name=nacos-config-example
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
  1. 启动类

添加 @EnableDiscoveryClient 注解

@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {
    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }
}
  1. 在 nacos 新增配置

启动服务,即可获取到配置中心的值,默认读取 服务名.properties 的配置

  1. 实时更新配置值 添加 @RefreshScope 注解
@RestController
@RefreshScope
@RequestMapping("member")
public class MemberController {
    @Value("${user.age}")
    private String age;
    @Value("${user.desc}")
    private String desc;
 
    @GetMapping("/config")
    public R config() {
        return R.ok().put("age", age).put("desc", desc);
    }

命名空间(name space)

  1. 基于环境进行隔离:开发、测试、生产
  2. 基于服务进行隔离:订单服务、会员服务、仓库服务(常用)

项目中指定命名空间 将命名空间的 id 复制到 bootstrap 配置里

spring.cloud.nacos.config.namespace=d7cbd7b2-39ff-4b05-92ba-802d916b5115

配置集:所有配置的集合

配置集 ID:Data Id

配置分组:Group,默认 DEFAULT_GROUP

spring.cloud.nacos.config.group=DEFAULT_GROUP

Tip

工作常用:每个服务创建自己的命名空间,利用分组区分环境

多配置集

  1. 将不同组件的配置单独写到一个文件里

bootstrap. properties

spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
spring.cloud.nacos.config.extension-configs[0].group=dev
#是否开启实时刷新配置,默认 false
spring.cloud.nacos.config.extension-configs[0].refresh=true

权重

在控制台可以配置集群服务的权重,权重越大,分配的流量越多

元数据 + 权重可以实现灰度发布