摘要: 在传统架构中,若是配置信息有变动,一般是登录服务器手动修改配置来使配置生效。在微服务架构中,应用数和节点数因为微服务化数量激增,致使发布次数增长,配置变动难度加大,一般是将应用配置抽象出来放置在外部的配置中内心,从而实现配置变动的自动化,但这类原生方案会存在依赖严重、发布延时高的问题。spring
在传统架构中,若是配置信息有变动,一般是登录服务器手动修改配置来使配置生效。在微服务架构中,应用数和节点数因为微服务化数量激增,致使发布次数增长,配置变动难度加大,一般是将应用配置抽象出来放置在外部的配置中内心,从而实现配置变动的自动化,但这类原生方案会存在依赖严重、发布延时高的问题。bootstrap
以Spring Cloud为例,其提供了Spring Cloud Config组件来默认对配置进行管理。安全
关于Spring Cloud Config的工做原理,以下图所示:服务器
和传统人肉到生产服务器上一台台手动修改配置的思路不一样,在Spring Cloud中,当用户配置发生变化时,用户能够在Git中修改配置,再经过Spring Cloud Config Server动态下发配置,从而在各个机器上动态生效。其整个流程大概以下:架构
至此,配置修改完成。并发
Spring Cloud Config组件成功的以配置中心思路解决了静态配置繁琐的运维问题,可是Spring Cloud Config仍存在如下问题:app
阿里云应用配置管理服务ACM,做为Nacos的云上实现,能够将以上的配置管理问题进行优化,配置修改将变得异常简单和高效,以下图所示。框架
整个操做流程分为两步:运维
ACM全面兼容Spring框架接口,包括Spring Framework、Spring Boot和Spring Cloud,其为 Spring Cloud编写的应用配置管理,和Spring Cloud Config对比,因为极简的架构,带来了众多的好处:curl
Spring Cloud用户能够基于Spring Cloud Config提供的接口将Spring Cloud应用的配置管理无缝迁移到ACM上,大幅度提高基于Spring Cloud框架的微服务应用的配置管理敏捷性。此外,相比于Spring Cloud Config,ACM还拥有多项实用功能,例如,云上配置安全合规,配置灰度发布和回滚等。
使用Spring Cloud的用户在阿里云上若是要从Spring Cloud Config切换成ACM方案,在程序业务层代码无需任何改动,原生@Value标签直接有效。用户仅仅须要改动Spring Cloud应用的两个编译配置文件便可。
一、修改配置文件
在 bootstrap.properties中添加ACM的链接地址和认证信息,示例以下。其中,endpoint、namesspace、accessKey和secretKey等参数在ACM控制台上能够直接获取。
指定spring.application.name和spring.coud.nacos.config.file之后,将决定ACM控制台上配置名,如上例中,配置名为com.alibaba.nacos.example.properties。
二、在 pom 中添加相关的nacos starter依赖
以下图所示。
以上两处修改完成以后,从新打包编译Spring Cloud程序,便可将配置管理转为ACM托管。
以Spring Cloud代码示例为例,/echo 接口将返回动态配置参数 configValue 的值。
将如下代码片断示例打包运行,并在对应ACM控制台上添加配置,设置对应配置名DataID (本例中为com.alibaba.nacos.example.properties),并点击发布。
最后在本地运行curl命令,假设http监控端口为8080:
则将返回:
返回true值后,即配置成功。详细的程序实例,可参照[ACM官方文档]()。