阿里云王牌架构师杨曦:N多环境N多应用个性配置管理如何从混乱到简单?

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 众多项目研发过程中为了调试观察应用运行时表现,修改常量配置的场景下往往需要频繁地对应用代码及配置项做打包发布进行应用版本更新甚至回滚代码。基于该场景,任何的应用配置项变更都需要将整个应用重新打包发布,整个过程非常繁琐,且容易出错。

_1_

阿里云高级解决方案架构师 杨旭

世界最大混合云的总架构师,4年前,开始作为双11阿里云技术负责人,负责搭建全球最大的混合云结构,把 “双11”的电商业务和技术场景在阿里云上实现,并保障这个混合云在双11当天能够满足全球客户的购物需求。

正文:

众多项目研发过程中为了调试观察应用运行时表现,修改常量配置的场景下往往需要频繁地对应用代码及配置项做打包发布进行应用版本更新甚至回滚代码。基于该场景,任何的应用配置项变更都需要将整个应用重新打包发布,整个过程非常繁琐,且容易出错。非常典型且具有代表性的是:Redis连接串配置,应用业务功能切换开关,应用的安全限流配置,数据库访问配置等等一系列。

在此引申一个切实场景:一批早期的数据库实例所在服务器都即将过保进行替换,新数据库实例的端口及用户名密码保持不变并且持续与老库保持数据同步,一个非常棘手的问题来了,若一个应用需要同时访问其中多个db实例,在切换的时候如何能做到快速的切到对应db的新实例上?尽可能缩短因切换全过程时间消耗而引起的业务系统不可用时长。

对于此,业界普遍解决方案是引入独立于应用之外的配置类服务系统,那么这类配置中心服务到底是如何应对这个棘手问题呢,同时具备哪些关键要素呢?

1.运行时动态调整配置项,业务代码感知配置变化并做出响应。

针对上述场景问题,对症下药。通过依托于配置中心服务,动态修改配置项并且业务代码及时感知到变化值,jdbc驱动能根据新的数据库连接串的变化并对新数据源发起连接请求操作,完美地解决数据库切换过程耗时长的问题,同理也能做到数据源的快速回切,比如发现待切换目标主库存在其他问题必须切回。

2.配置集中式管理,避免游离,杜绝配置项无对应owner。

作为应用owner,务必十分清楚自身应用需要哪些配置,分别是做什么用途的,配置的存在形态是什么。将这些原本存在于代码或静态properties配置文件的,梳理出来统一管理,这样做的好处是业务代码与配置项解耦,做到动配置而无需修改代码又避免发生遗漏。

3.配置层面的权限管理,特别是关键配置项不能谁都可以改动。

配置数据的安全性对应用至关重要,倘若是涉及到业务开关或是全局功能的配置,权限策略需要严格把控,比如淘宝大秒杀系统的时间,商品,库存等信息,是万万不可随意改动的。阿里云ACM配置中心服务结合RAM访问控制系统构建权限管理。
1

4.配置服务自身的容灾切换,高可用性等。

仔细剖析ACM的架构,这是一套分三层自下而上的高可用性和稳定性保障。首先从底层数据库存储主备容灾,再到ACM的主要服务层分布式集群可靠性,最后再是ACM客户端即应用侧的本地配置数据容灾。简单地说就是ACM的DB及应用服务都挂了,也不会立即影响到客户正在运行的应用系统,容灾发挥了重要作用。
2

Figure 1图片来自阿里云ACM

那么从业务使用需求角度我该如何选型配置服务?

几款主流相似产品简介:

1.ZooKeeper 是一个分布式应用程序协调服务,是 Google Chubby 的开源实现。它是一个为分布式应用提供一致性服务的软件,提供的功能包括配置维护、域名服务、分布式同步、组服务等。在 Hadoop 集群等场景下,ZooKeeper 同时充当应用配置管理的角色。但是由于它是 CP(Consistency,Partition Tolerance) 类应用,因此在可用性和性能上都会受到一定影响。

2.ETCD和 ZooKeeper 类似,ETCD 是一个高可用的键值存储系统,主要用于配置共享和服务发现。ETCD 是由 CoreOS 开发并维护的,灵感来自于 ZooKeeper 和 Doozer。它使用 Go 语言编写,并通过 Raft 一致性算法处理日志复制以保证强一致性。etcd 和 ZooKeeper 类似,同样可以用来做应用管理配置。但是由于它是强一致的管理类应用,因此其可用性和性能在某些场景会受到一定影响。

3.Spring Cloud Config Server和 ACM 类似,Spring Cloud Config Server 为服务端和客户端提供了分布式系统的外部配置支持。配置服务器为各应用的所有环境提供了一个中心化的外部配置。与 ACM 不同的是,Spring Cloud 配置服务器默认采用 Git 来存储配置信息,其配置存储、版本管理、发布 等功能都基于 Git 或其他外围系统来实现。除此之外,在配置功能方面,ACM 和 Spring Cloud Config 也有很大不同。
3

Figure 2来源阿里云ACM

【往期回顾】
1.阿里云王牌架构师一问开发者:我需要一个高并发的架构,我的系统要改造成微服务吗
https://yq.aliyun.com/articles/623271?spm=a2c4e.11155435.0.0.120433122PgFrW

2.阿里云王牌架构师二问开发者:容器和虚拟化你会怎么选?
https://yq.aliyun.com/articles/623272?spm=a2c4e.11155435.0.0.120433122PgFrW

3.阿里云王牌架构师杨曦:也谈系统缓存设计误区及高阶使用技巧
https://yq.aliyun.com/articles/624061

更多干货内容尽在阿里云总监课,戳链接报名:https://yq.aliyun.com/promotion/689

阿里云总监系列课重磅上线!聚焦人工智能、弹性计算、数据库等热门领域,首次集齐12位阿里云技术高管,耗时半年精心打磨,从理论到实践倾囊相授,从零开始绘制技术大牛成长路径,限时直播课程免费报名中!
IMG_1996

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
7天前
|
机器学习/深度学习 API 语音技术
|
11天前
招募!阿里云x魔搭社区发起Create@AI创客松邀你探索下一代多维智能体应用
招募!阿里云x魔搭社区发起Create@AI创客松邀你探索下一代多维智能体应用
259 0
|
27天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【2月更文挑战第31天】 随着数字化转型的加速,云原生技术已经成为推动企业IT架构现代化的关键力量。本文深入探讨了云原生架构的核心组件、实施策略以及面临的主要挑战。通过分析容器化、微服务、DevOps和持续集成/持续部署(CI/CD)等关键技术,揭示了如何利用这些技术实现敏捷性、可扩展性和弹性。同时,文章还讨论了企业在采纳云原生实践中可能遇到的安全性、复杂性和文化适应性问题,并提供了解决这些问题的策略和建议。
|
1天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
6天前
|
运维 监控 自动驾驶
构建可扩展的应用程序:Apollo与微服务架构的完美结合
构建可扩展的应用程序:Apollo与微服务架构的完美结合
27 10
|
7天前
|
云安全 数据采集 安全
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
阿里云提供两种关键安全产品:Web应用防火墙和云防火墙。Web应用防火墙专注网站安全,防护Web攻击、CC攻击和Bot防御,具备流量管理、大数据防御能力和简易部署。云防火墙是SaaS化的网络边界防护,管理南北向和东西向流量,提供访问控制、入侵防御和流量可视化。两者结合可实现全面的网络和应用安全。
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
|
7天前
|
机器学习/深度学习 PyTorch API
|
7天前
|
机器学习/深度学习 语音技术 算法框架/工具
|
17天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
14 0
|
28天前
|
Cloud Native 安全 Devops
构建未来:云原生架构在现代企业中的应用与挑战
【2月更文挑战第30天】 随着数字化转型的深入,企业正迅速采纳云原生技术以适应不断变化的市场环境。本文探讨了云原生架构的关键组成部分,包括容器化、微服务、持续集成/持续部署(CI/CD)和DevOps实践,并分析了它们如何促进企业的敏捷性和可扩展性。同时,文章也识别了企业在采用云原生技术时面临的安全、文化和技术挑战,并提出了相应的解决策略,以帮助企业在云时代保持竞争力。

热门文章

最新文章