Nacos 是一款阿里的开源产品。致力于发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,用于快速实现动态服务发现、服务配置、服务元数据及流量管理。
一、目标
引用nacos服务,完成多系统的服务注册与配置中心功能。同时需要保障系统的服务与配置可以支持多环境的切分。
二、方案说明
1、借用nacos的namespace与group的两级分类。namespace作为系统级别,group作为多环境(dev/test/prod)级别进行管控;
2、服务注册中心与配置中心对应的group命名是分离的,可以不同;
3、如果启用了nacos的权限管控功能,则是以namespace作为资源权限进行管控的。通过用户-角色-资源权限的管控体系,可以实现系统读写权限隔离,避免非法操作;
三、配置中心的三种配置方式
- DEFAULT_GROUP:nacos系统默认的分组,系统启动会默认扫描1、${prefix}-${spring.application.name}.${file-extension},2、${prefix}-${spring.application.name},3、${prefix}-${spring.application.name}-${spring.profiles.active}.${file-extension} 的data-id配置文件。这些默认文件的级别最高,遇到同名的key以其为准;
- extension-configs:自定义配置项。可以自定义data-id,group。注意data-id的命名必须要携带文件后缀,如.yaml。其级别低于系统默认文件;
- shared-configs:自定义配置项,可以存储不需要区分环境的公共配置。比如线程池的配置。可以自定义data-id,group。其级别低于extension-configs;
四、配置中心接入实战
4.1、环境简述
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.8.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR5</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.3.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.3.RELEASE</version> </dependency>
4.2、为应用注册命名空间
4.3、命名空间下注册配置项
4.4、项目集成Nacos配置中心
bootstrap.yaml
spring: application: name: service-consumer profiles: active: dev cloud: nacos: username: app-exchange password: 123456 discovery: namespace: 745f3022-9c9e-4795-9217-040aaf6f18d9 config: namespace: 745f3022-9c9e-4795-9217-040aaf6f18d9 file-extension: yaml extension-configs [ 0 ] : refresh: true extension-configs [ 1 ] : refresh: true shared-configs [ 0 ] : group: common |
系统启动后会看到nacos客户端,成功订阅配置文件,有相应的log可以查看