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

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,并点击发布。

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

则将返回:

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

原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

  1. 企业分布式微服务云SpringCloud SpringBoot mybatis (九)服务链路追踪(Spring Cloud Sleuth)...

    这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件. 一.简介 Add sleuth to the classpath of a Spring Bo ...

  2. 项目使用Spring Cloud做配置管理

    首先把自己项目的spring配置,由properties转到yml(经本人测试,某些spring新特性只有yml才能更好的支持). 配置文件相关用法,参照(国外网站打开慢,不能定位锚点的话,多刷新两次 ...

  3. 阿里高可用、高并发不传之秘!Spring Cloud+Nginx架构核心编程笔记限时开源!

    Spring Cloud+Nginx相结合的分布式Web应用架构已经成为IT领域应用架构的事实标准.Spring Cloud+Nginx架构具有高度可伸缩.高可用.高并发的能力,这使其成为各新产品.新 ...

  4. Spring Cloud Gateway 突发高危漏洞,下一代云原生网关恰逢其时?

    Spring Cloud Gateway 突发高危漏洞 Log4j2 的漏洞刚告一段落,Spring 官方在 2022 年 3 月 1 日发布了 Spring Cloud Gateway 的两个 CV ...

  5. 华为云应用服务网格最佳实践之从Spring Cloud 到 Istio

    摘要:在全球首届社区峰会IstioCon 2021中,华为云应用服务网格首席架构师张超盟发表了<Best practice:from Spring Cloud to Istio>主题演讲, ...

  6. spring cloud微服务分布式云架构 - Spring Cloud集成项目简介

    Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的.在学习Spring Clo ...

  7. (十六)spring cloud微服务分布式云架构-集成项目简介

    Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的.在学习Spring Clo ...

  8. Spring Cloud微服务分布式云架构—集成项目简介

    Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的.在学习Spring Clo ...

  9. java 电子商务云平台b2b b2c o2o springmvc+mybatis+spring cloud+spring boot

    大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 技术解决方案 开发语言: java.j2ee 数据库 ...

最新文章

  1. 空净厂商为何对“9颗星”认证趋之若鹜?
  2. 16进制数怎么判断正负
  3. android调试神器Stetho
  4. android入门--环境搭建
  5. 如何将 Microsoft Bot Framework 链接至微信公共号
  6. (19)Xilinx PCIE中断理论(学无止境)
  7. JAVA内存释放机制
  8. Mysql一直显示等待中_Mysql中的各种timeout
  9. PermGen space 与 Java heap space
  10. 【突破次元壁】谁说二次元离我们遥远?Python特效火遍全网,关键技术原来是它。
  11. 空降过来的男领导如何管理女性团队?我的一些实操技巧
  12. python读取文件报错OSError: [Errno 22] Invalid argument: '\u202aC:\\Users\\yyqhk\\Desktop\\1.csv'
  13. 初中计算机课感悟,初中信息技术课教育随笔
  14. Excel,根据一列的子集进行筛选
  15. OSChina 周六乱弹 ——清明节你怎么过的这么开心?
  16. 现在选择学JAVA,2023月薪过万大有前途~
  17. 计算机的专业的个人陈述,计算机专业留学个人陈述范文
  18. Java如何删除文件夹和子文件夹
  19. HNU程序设计-炸弹
  20. 关于AndroidID的记录:AndroidID什么时候会改变/AndroidID做唯一标识符是否可行

热门文章

  1. bytebuf池_图文分析ByteBuf是什么
  2. 【学习笔记】《Go 指南》
  3. list循环赋值_Python基础 | 0xd 条件判断与循环
  4. python如何计算整数和_python 整数和浮点数
  5. java高并发抢单编程模型_Java高并发模型
  6. 嵌入式linux python移植过程_嵌入式linux项目开发(一)——BOA移植
  7. 多所高校通知:暂缓返校
  8. 图灵登上英国50英镑新钞,AI之父荣耀比肩英国女王
  9. 谷歌AI算法 助力可控核聚变研究
  10. 逃离深圳的华为,原来可以这么美:研发小姐姐第一天上班游记