微服务为什么需要配置中心
1.微服务架构中,服务的数量和复杂度都会大幅增加,因此需要配置中心来集中管理和配置这些不同的微服务。
2.配置中心能够消除硬编码所带来的问题,实现多环境配置管理,避免手动修改配置文件带来的风险,并能够支持服务的动态扩展和部署。
3.通过配置中心,管理员可以轻松地监控和管理微服务的配置,及时更新服务配置,降低了运维成本和风险。
4.配置中心还可以提供版本管理功能,保证系统配置的一致性和可视性,确保微服务架构的稳定和性能。
怎么使用配置中心
1.本示例环境
JDK: 17
SpringBoot: 3.0.6
spring-cloud-starter-alibaba-nacos-config: 2021.0.4.0
nacos: 2.2.0-BATA
2.nacos 安装
参考我之前文章:Nacos 启动与配置
3.nacos配置
2.1 新建命名空间
2.2新建配置
4.pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.springcloud.nacos.config</groupId>
<artifactId>springcloud-nacos-config-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springcloud-nacos-config-demo</name>
<description>Demo project for Spring Cloud</description>
<properties>
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.0.4.0</version>
</dependency>
</dependencies>
5.application.yml
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
group: DEFAULT_GROUP
#指定文件名,没有则默认${spring.application.name}
#指定文件后缀
file-extension: yaml
namespace: dca4fe79-6c62-44df-aa7f-12f58de7e05c #这里是nacos的命名空间的id
config:
import:
- optional:nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}
application:
name: nacos.cfg.test
server:
port: 8080
6.NacosConfigController
@Controller
@RequestMapping("config")
public class NacosConfigController {
//通过 Nacos 的 @NacosValue 注解设置属性值
@Value(value = "${nacos.test.properties:null}")
private String testProperties;
/**
* 获取配置
* @return
*/
@RequestMapping(value = "/get", method = RequestMethod.GET)
@ResponseBody
public String get() {
return testProperties;
}
}
7.启动用http工具测试结果
以上整个示例就完成了
如果需要完整源码请关注公众号"架构殿堂" ,回复 "springcloud+nacos配置中心"获得
写在最后
如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达!