配置文件想必大家都不陌生在Spring Boot项目中,默认会提供一个application.properties或者application.yml文件,我们可以把一些全局性的配置或者需要动态维护的配置写入该文件,比如数据库连接功能开关、限流闻值、服务器地址等。为了解决不同环境下服务连接配置等信息的差异,Spring Boot还提供了甚于spring.profiles.active=profile)的机制来实现不同环境的切换。
随着单体架构向服务化架构及微服务架构的演进,各个应用自己独立维护本地配置的方式开始显露出它的不足之处:
统一配置管理就是弥补上述不足的方法,简单来说,最基本的方法是把各个应用系统中的某些配置放在一个第三方中间件上进行统一维护。然后,对于统一配置中心上的数据的变更需要推送到相应的服务节点实现动态更新。所以在微服务架构中,配置中心也是一个核心组件。
配置中心的开源解决方案很多,比如ZooKeeper、Disconf、ApolloSpring Cloud Config、QConfNacos等。同样,不管是哪一种解决方案,它的核心功能是不会变的;
Nacos是Alibaba开源的中间件,在第5章中笔者针对Nacos实现服务注册与发现功能进行了详细的分析。我们知道在Nacos的架构图中有两个模块,分别是Config Service和Naming Service。其中Config Service就是Nacos用于实现配置中心的核心模块,它实现了对配置的CRUD、版本管理、灰度管理、监听管理、推送轨迹、聚合数据等功能。我们主要国绕Nacos中的Config Service横块实现配置中心的功能进行深度的分析。
关于Nacos的两个注解说明如下。
OpenAPI创建方式
用过Spring Cloud的同学应该都知道,Spring Cloud Config是Spring loud生态中的统一配置管理的组件,它为外部化配置提供了服务端和客户端支持,包含Config Server和Config Client两部分。而SpringCloud Alibaba Nacos Config是Config Server和Client的替代方法下面我们演示-下如何基于Spring Cloud生态来集成Nacos实现配置中心。
在Spring Cloud生态下Nacos Config的使用步颗如下:
当Nacos Config Server上的配置发生变化时,需要让相关的应用程序感知配置的变化进而感知应用的变化,这就需要客户端针对感兴趣的配置实现监听。那么Nacos客户端是如何实现配置变更的实时更新的呢?
般来说,客户端和服务端之间的数据交互无非两种方式:Pul和Push。
这样既能够保证客户端实时感知配置的变化,也降低了服务端的压力。其中,这个长连接的会话超时时间默认是30s。