阿里云ACM:云原生配置管理利器

摘要: 在传统架构中,如果配置信息有变更,通常是登陆服务器手动修改配置来使配置生效。在微服务架构中,应用数和节点数由于微服务化数量激增,导致发布次数增加,配置变更难度加大,通常是将应用配置抽象出来放置在外部的配置中心里,从而实现配置变更的自动化,但这类原生方案会存在依赖严重、发布延时高的问题。

在传统架构中,如果配置信息有变更,通常是登陆服务器手动修改配置来使配置生效。在微服务架构中,应用数和节点数由于微服务化数量激增,导致发布次数增加,配置变更难度加大,通常是将应用配置抽象出来放置在外部的配置中心里,从而实现配置变更的自动化,但这类原生方案会存在依赖严重、发布延时高的问题。

Spring Cloud中的标准配置管理方法和存在的问题
以Spring Cloud为例,其提供了Spring Cloud Config组件来默认对配置进行管理。

关于Spring Cloud Config的工作原理,如下图所示:

和传统人肉到生产服务器上一台台手动修改配置的思路不同,在Spring Cloud中,当用户配置发生变化时,用户可以在Git中修改配置,再通过Spring Cloud Config Server动态下发配置,从而在各个机器上动态生效。其整个流程大概如下:

用户在Git中update和commit配置;
Spring Cloud Config Server通过回掉,获取更新配置;
用户在其中任一一台机器上执行配置刷新操作 (图中为 "post /bus/refresh")
目标机 (App A)在Config Server中拉取最新配置,并发送消息到消息总线中,通知其他机器配置被变更;
所有其他机器通过消息总线获知配置刷新后,在Config Server中拉取最新配置。
至此,配置修改完成。

Spring Cloud Config组件成功的以配置中心思路解决了静态配置繁琐的运维问题,但是Spring Cloud Config仍存在以下问题:

标准方案依赖Git。虽然提供其他存储支持,但是标准的Git方案饱受争议,毕竟Git运维在业界算是小众领域,在关键的生产环境中使用得并不多(开发测试环境除外);
配置变更依赖Cloud Bus,架构复杂的同时,存在配置的一致性问题;
整个配置的时效性较低。由于发布路径长,中间存在多个异步操作,因此从发布到最后所有配置生效,延时可能会是分钟级别。
阿里云ACM为spring cloud带来的配置管理优化
阿里云应用配置管理服务ACM,作为Nacos的云上实现,可以将以上的配置管理问题进行优化,配置修改将变得异常简单和高效,如下图所示。

整个操作流程分为两步:

用户在ACM中修改配置内容;
ACM动态推送到所有应用中。
ACM全面兼容Spring框架接口,包括Spring Framework、Spring Boot和Spring Cloud,其为 Spring Cloud编写的应用配置管理,和Spring Cloud Config对比,由于极简的架构,带来了众多的好处:

配置变更推送性能高,根据阿里巴巴内部的性能统计来看,绝大多数情况下,配置推送0.5秒生效,99.9%场景下,3秒以内能推送到上千台机器;
运维简单,不需要额外的Git存储或Cloud Bus组件,单应用接口即可完成所有配置中心功能;
遵循开源精神,ACM作为Nacos的云上实现,用户无需额外付费即可使用全部功能。
Spring Cloud用户可以基于Spring Cloud Config提供的接口将Spring Cloud应用的配置管理无缝迁移到ACM上,大幅度提升基于Spring Cloud框架的微服务应用的配置管理敏捷性。此外,相比于Spring Cloud Config,ACM还拥有多项实用功能,例如,云上配置安全合规,配置灰度发布和回滚等。

如何快速部署ACM
使用Spring Cloud的用户在阿里云上如果要从Spring Cloud Config切换成ACM方案,在程序业务层代码无需任何改动,原生@Value标签直接有效。用户仅仅需要改动Spring Cloud应用的两个编译配置文件即可。

1、修改配置文件

在 bootstrap.properties中添加ACM的连接地址和认证信息,示例如下。其中,endpoint、namesspace、accessKey和secretKey等参数在ACM控制台上可以直接获取。

指定spring.application.name和spring.coud.nacos.config.file以后,将决定ACM控制台上配置名,如上例中,配置名为com.alibaba.nacos.example.properties。

2、在 pom 中添加相关的nacos starter依赖

如下图所示。

以上两处修改完成之后,重新打包编译Spring Cloud程序,即可将配置管理转为ACM托管。

Spring Cloud 代码和配置变更实例
以Spring Cloud代码示例为例,/echo 接口将返回动态配置参数 configValue 的值。

将以下代码片段示例打包运行,并在对应ACM控制台上添加配置,设置对应配置名DataID (本例中为com.alibaba.nacos.example.properties),并点击发布。

最后在本地运行curl命令,假设http监控端口为8080:

则将返回:

返回true值后,即配置成功。详细的程序实例,可参照[ACM官方文档]()。

原文地址:http://blog.51cto.com/14031893/2318951

时间: 2024-08-04 03:54:47

阿里云ACM:云原生配置管理利器的相关文章

阿里云ACM:云原生配置管理利器,让云上的Spring Cloud应用配置管理舞动起来

在传统架构中,如果配置信息有变更,通常是登陆服务器手动修改配置来使配置生效.在微服务架构中,应用数和节点数由于微服务化数量激增,导致发布次数增加,配置变更难度加大,通常是将应用配置抽象出来放置在外部的配置中心里,从而实现配置变更的自动化,但这类原生方案会存在依赖严重.发布延时高的问题. Spring Cloud中的标准配置管理方法和存在的问题 以Spring Cloud为例,其提供了Spring Cloud Config组件来默认对配置进行管理. 关于Spring Cloud Config的工作

使用阿里云ACM简化你的Spring Cloud微服务环境配置管理

摘要: 本文我们就如何使用阿里云ACM这样的配置管理产品在Spring Cloud中替代Spring Cloud Config帮助简化环境配置管理做一个简单的示例,帮助你理解基于ACM来简化微服务环境配置管理的方案,并会简单比较一下ACM与Spring Cloud Config方案的优劣. 配置的环境属性 毫无疑问,在系统持续交付的过程中,系统最终运行环境的多样性及复杂性毫无疑问增加了我们在配置管理工作上的负担,有时候,甚至不夸张的说,配置就是因环境而生. 这在Eugen Paraschiv的博

阿里云-采云间DPC

阿里云-采云间DPC 数据集成 支持本地数据上传和RDS数据同步到ODPS:持续增加更多数据源之间的相互同步,实现云端数据的无缝 流通 数据处理 提供ODPS IDE工具.SQL代码管理和任务调度功能,是ETL研发利器,也是分析师的基础数据处理工具 数据分析 通过拖拽和可视化的方式分析大数据,将数据分析门槛降到极致,人人都是分析师 数据展现 通过搭积木的方式制作数据报表和数据产品页面,数据价值轻松分享 ? 用户开通采云间DPC服务后,可以通过DPC控制台进入采云间的工作台.该工作台内部集成了Al

阿里云启动“云合计划” 培育中国“微软”级企业

阿里云启动“云合计划” 培育中国“微软”级企业   8月19日,阿里云宣布启动“云合计划”,与合作伙伴一起构建适应DT时代的云生态体系.该计划拟招募1万家云服务商,为企业.政府等用户提供一站式云服务,并希望在中国市场培育出世界级的企业软件公司. 中国为什么没有诞生像Microsoft.Oracle这样企业级软件公司?阿里云总裁王文彬认为,长期以来,中国绝大部分企业将IT预算中80%的钱,投入到软硬件平台,而真正花在应用创新上的钱不到20%,这非常不合理. 王文彬进一步指出,中国企业级IT市场,长

阿里云ecs云服务器安装wdcp控制面板教程

以前就听说服务器非常的难,而且我也不懂代码,不懂英文,我怕自己学不会就买了一个月的.开始我都不知道啥样的服务器,还是我的一位哥们给我远程买的,他说这个镜像最稳定了. 服务器买好后我便开始研究,可是怎么也看不懂,找了很多教程都看不懂.其实服务器建站的方法有很多,像直接用镜像建站的,有用搭建的PHP空间建站的,有用控制面板的,这几天一连试了好几个都失败了. 最后我才发现,用阿里云服务器要找到适合自己的方法,像我哥们给我推荐的空桥镜像的我研究不了,还有一会员给我推荐的easypanel控制面板我也试了

聊一聊我的阿里云ECS云主机

javaweb学习有段时间了,期间也编写了一些自己的小webapp应用,但是都是发布在我们自己的个人pc上的. 于是我在想:怎么样让自己的项目可以发到公网上面去,让朋友们能够来访问? 我首先想到的是:服务器.一台能够在有网络的环境下,远程访问的计算机.其实还有一种方法:最近网上看到说用"花生壳"动态域名解析,可以让自己的电脑发布在公网上,这样别人就可以来访问你的电脑了.但是感觉这样还是特别的不安全.而且自己的电脑里面的资料可不少,万一哪位"朋友"来搞个小破坏,我的数

[培训计划]阿里云上云培训3月开课安排

        小伙伴们,经过春节假期的休整阿里云上云培训开始开课了,3月我们将推出ACP11001全面理解阿里云.ACA21101深入阿里云产品-云服务器ECS和软件负载均衡SLB.ACA21202在阿里云上进行应用开发.ACA21204在阿里云OSS上进行应用开发四门6场课程. 新年新气象,从3月开始大家可以通过阿里云官网中上云频道随时了解课程安排情况并进行在线报名购买,课程购买成功后即可参加相应课程. 具体课程介绍,及报名可通过以下链接进行了解并快速购买.近期将有部分培训类课程代金卷,大家

阿里云 VS 腾讯云 VS 华为云 VS 七牛云 VS Ucloud 国内五大云服务商云主机评测报告

前言 对于所有的公有云服务商来说,云主机是非常基础且重要的业务.那么在高性能云计算方面,作为互联网巨头的阿里云.腾讯云以及新兴云计算企业的代表华为云.七牛云和UCloud又有怎样的表现呢?最近,我们选择了阿里云.腾讯云.华为云.七牛云和UCloud这几家主流云服务商的云主机产品进行评测. 主机选取 虽然任意一家云服务商都无法保证同一系列所有的机器性能都一致,但通过样本的检测我们还是能大致了解各家云服务商的实力.本次选择的云主机配置为4核16G.为了较为公平的比较各家云服务商的主机性能,我们尽量选

Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解

Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756989) 前言:现在很多APP都需要云的功能,也就是通过网络与服务器交换数据.有的采用tcp/ip协议,但是你必须拥有一个固定ip的服务器,可以购买阿里云服务器之类的,就是贵了点.如果只是个人的小应用的的话可以采用新浪云平台这种免费的服务器,采用的协议是http协议,具体实现方式如下: 方式一.在线