三. Nacos 作为配置中心简单使用

一. 简单示例

使用 Nacos 作为配置中心,将配置变脸存放到 Naco 上, 需要读取配置变量的服务连接 Nacos,读取 Nacos 上的配置文件读取到变量,并且可以做到动态刷新

在 Nacos 上创建创建配置列表

  1. 启动 Nacos 进行访问,点击配置列表,点击 “+” 新建配置,输入 DataId 此处先简单理解为存放配置变量的配置文件名称,输入 Group 默认是 “DEFAULT_GROUP”, 输入当前创建的配置文件描述信息,设置当前配置文件类型,输入文件内容,也就是保存的变量
    在这里插入图片描述
  2. Nacos 作为注册中心分级保存配置文件方式

文件名相同,使用默认的 Group 分组,默认的 namespace 命名空间,通过环境的不同来配置
文件名相同,环境相同,通过不同的 Group 不同来配置
文件名相同,环境相同,通过 namespace 命名空间不同来配置(命名空间默认是 Public)

  1. Nacos 上创建命名空间,获取到命名空间id,可以将该id在项目yml 文件中配置到 namespace 上
    在这里插入图片描述
    在这里插入图片描述

创建通过 Nacos 读取配置文件的服务

  1. pom 文件中添加依赖
		<!-- nacos config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!-- nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
  1. 创建 bootstrap.yml 配置文件(系统级别,先加载 bootstrap.yml 然后加载application.yml),配置当前服务注册到哪个 Nacos 注册中心,通过哪个 Nacos 读取配置文件
server:
  port: 3377 #当前服务端口号

spring:
  application:
    name: nacos-config-client #当前服务名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址,将当前服务注册到Nacos上
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址,当前服务通过 Nacos 配置中心读取配置文件
        file-extension: yaml #指定在Nacos配置中心读取的文件类型yaml格式配置
        #读取文件还需要指定哪个环境下的文件,在当前项目中的application.yml 文件中进行了配置
        #group: TEST_GROUP #指定分组,读取 Nacos 上哪个分组下的配置文件
        #namespace: 6fecc7ae-f02f-49ef-ace7-80d2f671df77 #指定 Namespace 读取 Nacos 上哪个 namespace 的文件

#${prefix}-${spring.profile.active}.${file-extension}
# ${spring.application.name}-${spring.profile.active}.${file-extension}
# nacos-config-client-dev.yml
  1. 创建 application.yml (可以不创建将此处的设置统一配置到 bootstrap.yml 中,此处只是做一个分级的示例)
spring:
  profiles:
    active: dev #表示开发环境(通过该开发环境的设置,指定读取 Nacos 上哪个环境的配置文件)
  1. 启动类增加 @EnableDiscoveryClient
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigMain3377 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigMain3377.class,args);
    }
}
  1. 项目中通过 Nacos 获取变量的代码示例,该类使用 @RefreshScope 修饰,开启自动刷新功能,当更改 Nacos 上当前读取的变量的值时,会自动刷新
@RestController
@RefreshScope
public class ConfigController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getVal(){
        return configInfo;
    }
}
  1. 最终实现的效果,当前服务启动时,在 (config. server-addr=localhost:8848)Nacos 上读取名称与当前服务相同的环境是当前服务application.yml中配置的 ()spring,profiles.active=dev) dev 环境,类型是(file-extension: yaml) yaml 的配置文件,也就是读取到 Nacos 上的 “nacos-config-client-dev.yaml” 配置文件

yml 配置读取 Nacos 文件的规则

在这里插入图片描述

在这里插入图片描述

以下是一个使用Go连接Nacos作为服务中心和配置中心简单示例代码,可以作为参考: ```go package main import ( "fmt" "github.com/nacos-group/nacos-sdk-go/clients" "github.com/nacos-group/nacos-sdk-go/clients/config_client" "github.com/nacos-group/nacos-sdk-go/clients/naming_client" "github.com/nacos-group/nacos-sdk-go/vo" "os" "os/signal" "syscall" ) func main() { // 配置Nacos服务器地址和端口、命名空间等信息 serverConfigs := []vo.NacosServerConfig{ { IpAddr: "192.168.1.1", Port: 8848, }, } clientConfig := vo.NacosClientParam{ ServerConfigs: serverConfigs, NamespaceId: "public", } // 创建Nacos客户端 namingClient, _ := clients.NewNamingClient(clientConfig) configClient, _ := clients.NewConfigClient(clientConfig) // 实现服务注册和发现功能 instance := vo.RegisterInstanceParam{ Ip: "127.0.0.1", Port: 8080, ServiceName: "example", } namingClient.RegisterInstance(instance) serviceName := "example" instances, _ := namingClient.SelectAllInstances(serviceName) for _, ins := range instances { fmt.Println(ins.Ip, ins.Port) } // 实现配置中心功能 dataId := "example" group := "DEFAULT_GROUP" content, _ := configClient.GetConfig(vo.ConfigParam{ DataId: dataId, Group: group, }) fmt.Println(content) // 监听系统退出信号,关闭Nacos客户端 stop := make(chan os.Signal) signal.Notify(stop, syscall.SIGINT, syscall.SIGTERM) <-stop namingClient.DeregisterInstance(instance) namingClient.Shutdown() configClient.Shutdown() } ``` 在这个示例中,我们使用Nacos Go客户端SDK连接Nacos服务器,实现了服务注册和发现功能以及配置中心功能。首先我们配置了Nacos服务器的地址和端口,然后创建了Nacos客户端。接着我们使用API在Nacos注册中心中注册了一个示例服务,并从注册中心中查询到了所有服务实例的IP和端口。最后,我们从Nacos配置中心中获取了一个示例配置并打印出来。最后监听系统退出信号,关闭Nacos客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值