vlambda博客
学习文章列表

《微服务》05-Nacos配置中心01

前言

大家好呀,这章我们进入Nacos配置中心的学习,配置中心是微服务框架基础的框架之一,用于解决配置文件多,不好维护的问题。

为什么使用配置中心

设想一下以下场景:

某个公司的某个项目目前有10个服务,也就是10个子项目,每个服务有3个节点,也就是说一共部署了30个服务,如果将配置都写在子项目的application.yml里面,那么一旦改了其中一个配置参数,例如redis迁移了,这个时候,就要改10个子项目里面的application.yml。

有的公司为了避免线上配置被误修改,将开发和线上配置文件分开,所以分线上环境和线下环境,这个时候,如果需要改到线上环境的配置,就得改30处地方。这还是服务比较少的情况,假如有20个,30个服务,那么改动量将是成倍上涨。

此外这还不单单是改动量改的问题,如此大量的改动,难保不会出错,一旦出错,查找起来又是一番折腾。

那么有没有可以减轻这种工作的解决方案呢?答案是肯定的,配置中心就是用来解决这种场景的。

配置中心的作用

微服务框架中一个很重要的框架就是配置中心,配置中心会将各个服务的共有配置抽离出来,统一管理,如有需要改动,则只需在配置中心中修改一处地方,再同步给所有的服务即可。

Nacos也有一套自己的配置中心,这套配置中心使用起来简单、方便,比Spring Cloud官方自己的配置中心好用很多。

Nacos的配置中心提供了可视化的界面操作、权限配置。

可视化界面

我们登录nacos的管理后台,进入配置管理模块的配置列表菜单,可以看到所有的配置参数,这些配置参数是分命名空间的,也就是说不同的项目可以使用不同的命名空间管理各自的配置数据。

也就是说在管理后台里面配置的参数,可以直接在nacos客户端上面使用。

可以点击右上角的加号新增配置信息,界面如下:

《微服务》05-Nacos配置中心01
  • Data id是指配置集的id名称,看nacos官方文档的解释,这个配置通常用于组织划分系统的配置集,命名的格式通常采用java包的命名规则,保证全局唯一性,但这种命名规则不是强制的。也就是说我们可以给配置集取名例如:com.taobao.tc.refund.log.level。
  • Group是指分组,上一篇有说到,这个分组可以用于区分开发环境和线上环境。
  • 配置内容则是将我们的配置参数的数据写在里面,如果配置格式选择的是什么样的,在配置内容里面就用什么样的格式编写。

返回配置管理模块,进入历史版本列表中,这里可以看到配置修改的历史记录。也可以将版本进行回滚。

还有一些其他好用的功能,这里不做详细讲解。

权限配置

nacos配置中心可以给nacos配置用户,设置用户的权限,用户归属的分组,从而达到区分项目用户,当然,如果一个nacos服务端只给一个项目使用,那么这个权限则可以用来配置项目的线上和线下区分。

下面来看看怎么配置权限。

首先我们在权限控制模块里面可以看到三个菜单分别是:用户管理角色管理权限管理

用户管理

nacos服务端的用户配置,可以创建用户,也可以修改用户密码,如果这边修改了用户的密码,也就是说用户登录nacos服务密码变了,那么在项目的配置文件application.yml里面也需要将以下两个参数进行修改:

spring:
  cloud:
    nacos:
      discovery:
        username: nacos
        password: nacos

usernamepassword默认都是nacos,如果发生变化,这边需要修改,否则登录会报异常。

角色管理

新增角色,和用户绑定。在下面的权限管理中,要给用户配置权限,需先新增角色。

权限管理

权限管理即是为命名空间配置权限的,同时新增角色,点击界面的添加权限按钮,进入配置界面如下图:

《微服务》05-Nacos配置中心01
  • 角色名可自行输入,用于在角色管理菜单中配置和用户进行绑定。
  • 资源即是命名空间的列表,我们可以下拉看到如下图:
《微服务》05-Nacos配置中心01
  • 动作即是权限,可选的有:只读、只写、读写三种:
《微服务》05-Nacos配置中心01
权限配置演示
  1. 为了演示,我们先创建两个新的命名空间: prodev
《微服务》05-Nacos配置中心01
  1. 回到权限控制,我们新建两个用户: test01test02
《微服务》05-Nacos配置中心01
  1. 再到角色管理新建两个角色: test01_rtest02_rw,分别代表 test01用户只读权限, test02用户读写权限,并分别绑定 test01test02用户:
《微服务》05-Nacos配置中心01
  1. 在权限管理中,为新建的角色分配命名空间和权限,我们都将两个角色分配在了 dev命名空间下:
《微服务》05-Nacos配置中心01
  1. 启用权限认证功能。要想让配置有权限认证功能,首先需要启用权限认证功能,我们进入nacos安装的根目录,打开conf文件夹,使用编辑器打开 application.properties文件,找到如下内容,将 false改为 true,默认是 false(注意:如果是集群,每个集群都得把这个配置打开),改成下方配置:
### If turn on auth system:
nacos.core.auth.enabled=true
  1. 重启nacos服务后,使用test01登录nacos后台,这个时候,我们再去访问除 dev之外的其他命名,会提示没有权限,如下:

不止是无法访问其他命名空间的内容,因为test01是只读权限,在dev命名空间下,也是不能够编辑配置内容的:

可以看到我们在dev命名空间下去新增一个配置集,提示授权失败。

我们用test02登录系统,因为是读写权限的,除了非dev命名空间不能访问外,在dev命名空间内可以新增、修改配置。这里不做演示。此外,在权限配置里面配置的权限,不单单在配置中心生效,在命名空间、服务列表都是生效的,都是只能读,服务列表也是只能看dev下的服务,无法看到其他空间的服务,查看会提示授权失败。

上面就是我们使用nacos配置中心可视化操作和权限配置。下面我们进入nacos配置中心的使用。

总结

本章先简单介绍nacos配置中心,可视化操作,具体的代码环节放下一个章节演示,一个章节尽量不写太多,写的太多,大家看的也烦,学的也累。

每天学习一点技术,喜欢就关注我吧。