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

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

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

Spring Cloud中的标准配置管理方法和存在的问题

以Spring Cloud为例,其提供了Spring Cloud Config组件来默认对配置进行管理。

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

1541680214859_91a597f5_158c_4d48_ba2a_61a4d08169b2

和传统人肉到生产服务器上一台台手动修改配置的思路不同,在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的云上实现,可以将以上的配置管理问题进行优化,配置修改将变得异常简单和高效,如下图所示。

1541729584501_4353a192_663a_48f4_9b3f_01c55cd80362

整个操作流程分为两步:

  • 用户在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控制台上可以直接获取。

1541683676569_02f8d3ad_3993_4e11_9211_b78f6e85288b

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

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

如下图所示。

1541683836271_356853cb_4aed_4c84_a6ed_192fa38a9fab

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

Spring Cloud 代码和配置变更实例

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

1541687303513_e93aed02_b920_46f4_ac82_f25ba9d36781

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

1541687775823_3d2f4026_d155_4f79_bd12_a204a363f45a

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

_2018_11_12_11_56_45

则将返回:

_2018_11_12_11_56_51

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

欢迎加入Aliware企业级互联网架构钉钉群:21704851

相关文章
|
7天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
7天前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
2024云栖大会,阿里巴巴研究员易立分享了阿里云容器服务的最新进展。容器技术已成为云原生操作系统的基石,支持多样化的应用场景,如自动驾驶、AI训练等。阿里云容器服务覆盖公共云、边缘云、IDC,提供统一的基础设施,助力客户实现数字化转型和技术创新。今年,阿里云在弹性计算、网络优化、存储解决方案等方面进行了多项重要升级,进一步提升了性能和可靠性。
|
9天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 11 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
16天前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
31 6
|
16天前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
36 5
|
16天前
|
缓存 监控 Java
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
27 5
|
22天前
|
敏捷开发 Kubernetes Cloud Native
阿里云云原生技术为企业提供了一套高效、灵活的解决方案,支持跨云部署与管理
在多云环境中,阿里云云原生技术为企业提供了一套高效、灵活的解决方案,支持跨云部署与管理。通过容器化、服务网格等技术,实现了应用的一致性与可移植性,简化了多云环境下的资源管理和服务治理,帮助企业应对复杂的云环境挑战,加速数字化转型。
36 5
|
22天前
|
存储 Prometheus 运维
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案。该集成结合了ARMS的基础设施监控能力和Prometheus的灵活配置及社区支持,实现了全面、精准的系统状态、性能和错误监控,提升了应用的稳定性和管理效率。通过统一的数据视图和高级查询功能,帮助企业有效应对云原生挑战,促进业务的持续发展。
30 3
|
25天前
|
边缘计算 运维 Cloud Native
阿里云基于云原生的大规模云边协同关键技术及应用荣获浙江省科学技术进步一等奖
11月22日, 2023年度浙江省科学技术奖获奖成果公布,阿里云与浙江大学、支付宝、谐云科技联合完成的基于云原生的大规模云边协同关键技术及应用获得浙江省科学技术进步一等奖。
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
217 2