目录
1. 为何需要配置中心
没有配置中心的情况下会出现什么情况:
- 如果没有配置中心,则各个服务的配置文件分散在各个项目中,不方便维护
- 出于安全考虑,实际开发中,开发人员并不知道生产环境的配置
- 在更新配置后项目需要重启
加配置中心后可以有效的解决上述的问题。
2. nacos的配置中心
下面的开发示例演示了如何在一个服务中加入配置中心的支持。如果对Netflex公司开发的微服务组件有所了解,应该知道在Neflex服务组件中也有配置中心,但需要专门创建一个注册中心服务与GitHub(或类型的git仓库)中的配置文件仓库关联,其他服务使用配置中心时需要调用配置中心服务。nacos则比较简单,只用在需要配置中心的模块中直接配置即可。
具体步骤:
- 创建一个新的模块,用于演示配置中心的使用
- 编写pom导入必要依赖
- 编写项目配置文件,yml或properties
- 编写启动类
- nacos中增加配置信息
- 在项目中使用配置中心
- 配置自动刷新
2.1 配置示例
1) 新建一个模块,作为配置中心
2)pom文件引入必要的依赖
<dependencies>
<!-- 提供web能力 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 从注册中心进行服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 向注册中心进行服务注册 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
</dependencies>
2) 编写项目配置文件
bootstap.yml与application.yml之间的区别:
bootstrap 加载优先于 applicaton。bootstrap 主要用于从额外的资源来加载配置信息。
bootstap的使用场景:
- 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息
- 一些固定的不能被覆盖的属性
- 一些加密/解密的场景
bootstrap.yml
server:
port: 8877 #服务端口号
spring:
application:
name: service-config #服务名称
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #中心中西ip及端口号
config:
server-addr: 127.0.0.1:8848 #配置中心及端口号
file-extension: yaml #存放在配置中心的配置文件的扩展名
application.yml
spring:
profiles:
active: dev #表示启用开发环境的配置文件
3)编写启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigApp {
public static void main(String[] args) {
SpringApplication.run(ConfigApp.class,args);
}
}
4)启动配置服务,测试是否能正常的加入到nacos
5)nacos中增加配置信息
- dataId的规则: $ {prefix}-spring.profile.active.{file-extension}
$ {prefix}: 前缀,默认为spring.application.name的值
$ {spring.profile.active} 当前环境对应的profile,(多环境配置)
$ {file-extension} 配置内容的数据格式(文件扩展名)
根据上面的规则,我们可以将dataId配置为: nacos-config-dev.yml , 此处需要和bootstrap.yml中配置的file-extension属性保持一致,否则不能正常读取。
注意:此处需要注意配置文件的格式,如果是yml文件,则冒号后面需要有一个空格。
6)读取配置中心信息
ConfigController.java
@RestController
@RefreshScope
public class ConfigController {
@Value("${config.msg}")
private String msg;
@GetMapping("/config/msg")
public String getMsg() {
return msg;
}
}
2.2 多环境配置
1)通过上面讲述的配置步骤,再配置一个配置文件,dataId:nacos-config-test.yml, test表示为测试环境。如图所示:
注:Data Id中的test要与bootstrap中active的test要一样
2)将application.yml配置文件修改使用test环境
spring:
profiles:
active: test
3)启动服务测试,如图,说明多环境配置生效。
2.3 GROUP
1)在配置中心中创建一个新的配置文件,并指定分组,dataId的规则同上。
2)配置文件
bootstrap.yml
application.yml
3)启动测试
2.4 namespace
1) public为保留的命名空间名称
2)创建命名空间
3)创建成功
4)在创建的命名空间中添加配置
具体配置如下:
5) 配置文件
=--------
6) 测试