Nacos 作为服务注册中心 & 配置中心

注册中心

1. 服务注册与发现流程

205cfe2f3e0549768d87179e2d655d43.png

角色说明

  • 服务注册中心(Register Service):它是一个 Nacos Server,可以为服务提供者和服务消费者提供服务注册和发现功能。

  • 服务提供者(Provider Service):它是一个 Nacos Client,用于对外服务。它将自己提供的服务注册到服务注册中心,以供服务消费者发现和调用。

  • 服务消费者(Consumer Service):它是一个 Nacos Client,用于消费服务。它可以从服务注册中心获取服务列表,调用所需的服务。

流程说明

  • 从 Nacos 官方提供的下载页面中,下载 Nacos Server 并运行。

  • 服务提供者 Nacos Client 启动时,会把服务以服务名(spring.application.name)的方式注册到服务注册中心(Nacos Server);

  • 服务消费者 Nacos Client 启动时,也会将自己的服务注册到服务注册中心;

  • 服务消费者在注册服务的同时,它还会从服务注册中心获取一份服务注册列表信息,该列表中包含了所有注册到服务注册中心上的服务的信息(包括服务提供者和自身的信息);

  • 在获取了服务提供者的信息后,服务消费者通过 HTTP 或消息中间件远程调用服务提供者提供的服务。

2. 单机版客户端搭建

引入依赖

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

编写配置文件

management:
  endpoints:
     web:
       exposure:
         include: '*'  #暴露所有端点
server:
  port: 8081
spring:
  application:
     name: service-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848   #nacos地址

启动类添加注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceProviderApplication {
      public static void main(String[] args) {
              SpringApplication.run(ServiceProviderApplication.class, args);
  }
}

页面查看

25ad80f4df8e036fa7bf51d1bee8e414.png

配置中心

1. 配置获取流程图

1728a05e0d2f0ae67e2aef9983e949ae.png

2.单机版客户端搭建

引入依赖

编写bootstrap.yml配置文件

bootstrap.yml 是系统级别的,加载优先级高于application.yml ,负责从外部加载配置并解析

management:
  endpoints:
     web:
       exposure:
         include: '*'  #springboot监控开启所有端点
server:
  port: 8083
spring:
  application:
    name: config-client
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848   #服务注册到nacos注册中心的地址
      config:
        server-addr: 127.0.0.1:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置

编写application.yml配置文件

可以通过指定不同的激活文件配合Data Id从nacos获取不同环境下的配置

spring:
  profiles:
     active: dev #激活 dev 的配置

nacos 控制台添加配置

75e75978cea12cd7cdbecbc68d886c36.png

e7ebdccfe99a6925adcaf805d045b45d.png

e8bce29b7da7bb608bdadf2e2eb7a82c.png

Nacos Server 配置的Data ID的完整格式如下:${prefix}-${spring.profiles.active}.${file-extension}  dataId 格式中各参数说明如下:

  • ${prefix}:默认取值为微服务的服务名,即配置文件中 spring.application.name 的值,我们可以在配置文件中通过配置 spring.cloud.nacos.config.prefix 来指定。

  • ${spring.profiles.active}:表示当前环境对应的 Profile,例如 dev、test、prod 等。当没有指定环境的 Profile 时,其对应的连接符也将不存在, dataId 的格式变成 ${prefix}.${file-extension}。

  • ${file-extension}:表示配置内容的数据格式,可以在配置文件中通过配置项 spring.cloud.nacos.config.file-extension 来配置,例如 properties 和 yaml。

启动类添加注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }
}

编写配置类获取配置

注意注解@RefreshScope

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "config")
@RefreshScope
public class Config {

    private String version;

    private String name;

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

配置使用

注意注解@RefreshScope

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RefreshScope
@RestController
@RequestMapping("api/vi/config-client")
public class Controller {

    @Autowired
    private Config config;

    @GetMapping
    public String get() {
        return "name:" + config.getName() + " | version:" + config.getVersion();
    }
}

记得点「」和「在看」↓

爱你们

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值