nacos可视化界面使用说明

发布时间:2023年12月29日

本文主要简单介绍下nacos可视化界面的使用以及对应的配置中心的管理,包括配置文件的读取等。

一、命名空间模块使用说明

命名空间主要用来对服务进行分类,这里以开发环境来创建命名空间,分别为开发环境(dev)和生产环境(prod),在使用springcloud框架进行开发时,可通过spring.cloud.nacos.discovery.namespace = public 来将服务发布到对应的命名空间下

在这里插入图片描述

二、权限控制模块使用说明

要使得权限控制模块的配置生效,需要修改nacos内application.properties的配置文件。

nacos.core.auth.enabled=true

将其值修改为true后才能让nacos中的权限控制功能生效,默认是关闭的,不生效。修改后重启nacos服务。

点击用户列表,创建readOnly用户。
在这里插入图片描述
点击角色管理中绑定角色,输入角色名称和对应的用户,将用户绑定给对应的角色。
在这里插入图片描述
最后点击权限管理中的添加权限按钮,输入角色名,选则对应的资源和动作,资源指的是需要访问的命名空间,动作是选择用户读、写数据的行为。这里选择dev命名空间,只读操作,意思是当前角色对应的用户只能在dev命名空间下进行读操作,不能访问其他命名空间,也不能在dev命名空间下进行写操作。
在这里插入图片描述

三、配置管理模块使用说明(nacos配置中心)

在微服务架构中,配置文件多而杂,维护起来非常不便,因此需要一个可靠的统一配置管理中心进行管理,nacos配置中心就是其中一个,它可以对系统中配置文件进行统一管理,而且修改会实时生效。
在进行nacos配置动态读取之前,需要对微服务项目进行一定的配置。

1、配置文件名和data Id相同情况

首先在微服务项目的resources目录下新建bootstrap.yml配置文件

# 必须通过bootstrap来配置server-addr
spring:
  application:
    name: com.tuling.config
  cloud:
    nacos:
      # 通过nginx负载均衡
      server-addr: 192.168.40.128:8847
      # 当在nacos的application.properties配置中开启了权限,则用户名和密码必须配置,
      # 否则会出现 unknown user! 异常
      username: nacos
      password: nacos
      config:
        namespace: public
        # Nacos客户端 默认是读取application.name配置的服务名(com.tuling.config)的properties文件扩展名(即只能在配置列表中添加.properties的配置文件才能被读取到)
        # 当需要改为其他格式,如yaml,需要通过配置file-extension来指定
        file-extension: yaml

com.tuling.config 为当前微服务的服务名,随后将微服务启动类修改如下形式

@SpringBootApplication
public class ConfigApplication {
    public static void main(String[] args) throws InterruptedException {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(ConfigApplication.class, args);
        while (true) {
            String userName = applicationContext.getEnvironment().getProperty("user.name");
            String userAge = applicationContext.getEnvironment().getProperty("user.age");
            System.err.println("user name: "+userName+"; age: "+userAge);
            TimeUnit.SECONDS.sleep(2);
        }
    }
}

在nacos可视化界面中新增配置,配置名和服务名相同
在这里插入图片描述
文件格式选择yaml时,需要在bootstrap文件中配置file-extension: yaml,否则读取不到,只能选properties默认格式才能被读取
在这里插入图片描述

2、配置文件名和data Id 不同情况

当配置文件名和data Id 不同时,需要在配置文件中指定对应的data Id
这里提供shared-configsextension-configs两种配置方式

# 必须通过bootstrap来配置server-addr
spring:
  application:
    name: com.tuling.config
  cloud:
    nacos:
      # 通过nginx负载均衡
      server-addr: 192.168.40.128:8847
      # 当在nacos的application.properties配置中开启了权限,则用户名和密码必须配置,
      # 否则会出现 unknown user! 异常
      username: nacos
      password: nacos
      config:
        namespace: public
        # Nacos客户端 默认是读取application.name配置的服务名(com.tuling.config)的properties文件扩展名(即只能在配置列表中添加.properties的配置文件才能被读取到)
        # 当需要改为其他格式,如yaml,需要通过配置file-extension来指定,而且只针对默认配置文件,当需要指定data id时,该配置其实无效
        file-extension: yaml
        shared-configs:
          - data-id: testConfig  # 设置data-id  其中 -符号相当于数组下标,可以配置多个,而且后面配置的会覆盖前面的配置项
            refresh: true  # 设置动态感知,即配置文件发生变化,服务能立即感知到
          - data-id: testConfig2
            refresh: true
        # 另一种方式设置data id 优先级大于shared-configs
        extension-configs[0]:
          data-id: testConfig3
          refresh: true
        extension-configs[1]:
          data-id: testConfig4
          refresh: true

3、在bean中通过@Value注解获取配置文件中的值

使用@Value注解获取配置文件中的值时,当配置文件中值发生变化,@Value获取的依然是之前的,不会发生改变,需要加上@RefreshScope注解解决这一问题,如下一个简易的Controller示例

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
    @Value("${user.name}")
    private String userName;

    @GetMapping("/show")
    public String getUserName(){
        return userName;
    }

}
文章来源:https://blog.csdn.net/weixin_42684368/article/details/135268608
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。