开发者学堂课程【精通 Spring Cloud Alibaba:分布式配置中心产生的背景】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/634/detail/10084
分布式配置中心产生的背景
内容介绍:
一、在项目中定义配置文件最大的缺陷
二、定义配置规范
三、分布式配置中心的概念
四、分布式配置中心的框架
一、在项目中定义配置文件最大的缺陷
在项目中定义配置文件,最大的缺陷是如果在生产环境正在运行的时候突然需要修改配置文件的话,必须重启我们的服务器。
举例:
这里有个 springboot 项目 mayikt_nacos_client,项目中整合了一个 web 组件
配置文件只有一个端口号叫做8010
然后在 NacosController 中 加入了一个 SpringBoot 简单去实现的一个接口,
删除
import org.springframework.cloud.context.config.annotati
on.RefreshScope
可以看到在下面定义了一个配置文件叫 mayikt
public class NacosController {
@Value(“${mayikt.name}”)
private String userName;
@RequestMapping(“/getConfig”)
public String getConfig() { return userName; }
public static void main(String[] args) {SpringApplication.run
(NacosController.class);
}
}
这时再去访问 getConfig 这样的一个切口时,能够读取到这个配置文件
二、定义配置规范
定义配置规范:前面一定加上团队名称
举例:在 application.yml 中
如果像这样来命名配置文件,阅读性很差:
name: mayikt
age: 21
例如规范为
mayikt:
name:每特教育牛逼~~
运行 NacosController.java 启动成功,
现在访问接口127.0.0.1:8010/getConfig
现在要修改配置文件 mayikt:name:
为每特教育|蚂蚁课堂牛逼~~,直接修改不会进行同步更新,因为配置文件是默认在项目启动的时候去读取到配置文件,然后放到内存里,此外不建议做热部署,因为热部署在这个环境下其实有很多 bug ,如果注了一些 class 文件,那么进行动态的运行肯定不太好,所以在这种环境不允许热部署。热部署一般是属于在本地开发,能够帮助我们快速去重启去加载我们的 class 文件
那么想要 mayikt:
name:每特教育|蚂蚁课堂牛逼~~
这样一个配置文件生效的话,需要重新打包运行,重新运行一下,可以看到最终结果显示每特教育|蚂蚁课堂牛逼~~但是如果每次想要修改配置文件,都要重启项目很麻烦。
所以就引出了分布式配置中心
三、分布式配置中心的概念
使用专门的服务器统一存放管理我们整个的微服务的配置文件,能够完全动态实现对我们配置文件修改、新增,是不需要重启我们的服务器
四、分布式配置中心的框架
携程的阿波罗(属于比较重的分布式配置)、Nacos(属于轻量级)、SpringCloud Config(没有界面) /disConfig 等。
轻量级:
部署、架构设计原理都比较简单,学习成本也是比较低;
重量级:
部署、架构设计、提亮都是非常大,学习成本是比较高。