Nacos的配置中心
先来聊聊配置中心是什么,以及为什么要使用配置中心。简单的说,配置中心是可以集中、灵活、动态的管理系统中的各种配置参数的配置管理产品,例如增、删、改、查功能开关、数据库连接配置、服务请求地址等。所谓集中,就是有统一管理的平台;灵活,不需要修改代码,做到自动匹配赋值、配置隔离;动态,不需要通过重启服务来使变更生效,主动推送或拉取变更的值。
对于配置参数,早期很传统的做法是通过程序硬编码的方式,将参数值写到代码中,如果要改变参数值,不仅要修改代码,还需要重新部署。重新部署倒是勉强可以接受,修改代码会导致代码混乱,你想想如果不同的部署环境有N多不同的配置参数值,是不是每部署一个环境就需要改一次代码,所以这个坚决不能忍受。为了解决这个问题,将配置参数放到配置文件或数据库中,在需要修改参数值时直接修改即可,不需要改动代码,但有些时候仍然需要重新部署,因为你不可能把所有参数都放到数据库中配置,而且频繁读库,参数变更也不能及时生效,再者说,文件或数据库的方式管理起来也不是很方便,除非开发一个管理平台。所以,配置中心应运而生,可以集中、灵活、动态的管理这些参数配置。
Nacos提供了一个简洁易用管理控制台,通过它可以管理所有的服务和应用的配置。Nacos的动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。它还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
Nacos配置中心中的相关概念
配置项:通常以key-value的形式存在,例如:
database.trade.connect.url=jdbc:mysql://127.0.0.1:3306/trade。
配置集:一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。
配置集ID:即某个配置集的ID,使用Data ID表示。一个系统或者应用可以包含多个配置集,每个配置集推荐使用一个有意义的名称标识,并且要保证全局唯一,例如 trade-datasource.properties。推荐Data ID采用类Java包的命名规则保证全局唯一性,例如com.abc.trade.datasource.properties,需要注意的是Nacos默认支持JSON、XML、YAML和Properties格式的配置项解析,所以如果Data ID的名称中包含.,它的名称后缀要以.json/.xml/.yaml/.properties结尾,如果Data ID的名称中不包含.,Nacos默认使用.properties格式解析配置项。
配置分组:通过一个有意义的字符串对配置集进行分组,从而区分Data ID相同的配置集,例如Payment、Trade等。在Nacos上创建一个配置时,如果未填写配置分组的名称,则使用DEFAULT_GROUP作为默认的配置分组名称。
命名空间(Namespace):不同的命名空间下,可以存在相同的配置分组或 Data ID的配置。 主要用于不同环境的配置的区分隔离,如果未明确指定,则默认的命名空间是public。例如测试环境和生产环境的配置是不同的,就可以使用不同的命名空间来区分隔离不同的配置,如测试环境的命名空间设置为dev,生产环境的命名空间设置为prod。
Nacos配置中心中的一个配置项由命名空间+配置分组+配置集ID+配置项key唯一确定。