`
猫耳呀
  • 浏览: 160874 次
社区版块
存档分类
最新评论

如何借助配置中心ACM加速企业IT服务快速迭代

 
阅读更多

摘要: 在5月29日召开的第二届研发效能嘉年华中,云效邀请了阿里云产品团队的伏羿和来自阿里巴巴中间件技术部的彦林带来了“如何借助配置中心ACM加速企业IT服务快速迭代”的主题分享。 分别对配置中心ACM和ACM技术进行了讲解,并且对ACM的主要应用场景进行了介绍,并进行了Demo环节。

在5月29日召开的第二届研发效能嘉年华中,云效邀请了阿里云产品团队的伏羿和来自阿里巴巴中间件技术部的彦林带来了“如何借助配置中心ACM加速企业IT服务快速迭代”的主题分享。 分别对配置中心ACM和ACM技术进行了讲解,并且对ACM的主要应用场景进行了介绍,并进行了Demo环节。
精彩视频请点击
PPT下载请点击
以下为精彩内容整理:

配置中心基本形态介绍

有了配置中心以后,用户或者管理员不需要再登录到配置中心或者配置中心下面的操作系统去修改文件。取而代之的是到配置中心的平台上去修改对应的配置,那么配置会对后面不同的应用监听到,当配置或者应用启动要去获得配置的时候,通过配置中心和应用的交互来完成任务的分发。通过这种方式极大的提高了修改配置的这种效率、简化了流程。

ACM简介

应用配置管理(Application Configuration Management,简称 ACM),ACM是由阿里中间件配置中心工具Diamond延伸出来的,在阿里内部为被使用最广泛的中间件,于2017年10月正式成为阿里云产品。
ACM 来自于阿里配置中心管理工具Diamond,那么Diamond在阿里内部到底是什么情况呢?主要是几点,第一点Diamond可能是阿里内部应用最广泛的中间介,覆盖量大概是80%,主要是因为他使用场景是非常多的。作为一个配置中心工具,在阿里内部有极好的性能保证,对内承诺的SLA是保证在1秒以内,这个对很多上层的业务提供了能力的保证。当机房发生故障的时候,通过配置中心去推配置能保证很多的工作负载能在1秒钟之内就能完成迁移。还有很多其他各种各样的场景,比如说通过非常方便的运维能力能帮助集团的很多其他业务去做类似于限流降级。还有去做一些算法的场景,还有去做多环境管理,应用场景非常多,所以说这个是目前配置中心管理在阿里内部的一个使用现状。
在外部来看同时期配置中心在行业的走向的历史情况是什么样的,到今天配置中心已经完成了从原始的无工具到有工具,成为公有云上面一个正式产品的一个历史发展路径。从业界的发展历程来看,配置中心已经完成了从没有工具到有工具再到正式产品化的一个发展历程。

ACM 技术详解

配置中心基本功能


有了配置中心以后用户不需要登陆到机器上去改配置文件,取而代之的是他到配置的管理控制台上去发布一个配置,相应的配置会写到配置中心的服务器上,服务中心会把不同的配置推送到下面的应用上去。所以沉淀下来三个基本功能,第一个是发布配置,第二个是获取配置,第三个是动态配置的变化监听。

基础架构


ACM的服务端主要由三部分组成,第一个是地址服务器,提供ACM (Diamond)服务发现功能,实现了集群扩容、下线等运维工作对于应用方的透明。第二个是ACM(diamond)-server组件,是ACM服务的核心。该组件通过Http协议向应用方提供配置的持久化管理、动态配置推送服务。实现上,ACM(diamond)-server组件是一个Web服务集群,集群节点间通过特定机制实现数据变更的增量同步,是无中心化的结构。第三个是Mysql存储,是ACM(Diamond)服务持久化配置管理的基础。在淘宝生产环境中,使用一主两备的部署方式保障数据的安全。
总结来说,ACM的设计,使用集群代替中心,做到无单点,以此提高系统的可靠性;使用Http无状态协议暴露服务,使系统实现逻辑简单,不易出错。

基于Cache的配置发布、获取原理


ACM (Diamond) 的持久化配置保存在mysql中,额外的服务端每个节点都以本地磁盘文件的形式保存了全量的配置数据作为cache。引入服务端配置数据的缓存文件后,一次配置数据的读取请求,其实就是一次静态文件的Http请求。借助0拷贝的优化,减少了配置数据在应用态和内核态之间无用的内存拷贝,大大提升了数据传输效率。
引入cache机制后,ACM (Diamond)在实现上可以被定为一个分布式的缓存系统。在CAP方面,ACM (Diamond)选择牺牲数据的强一致,提供了最终一致性;保证了系统的可用性和分区容忍性。通过实践也证明了,提供最终一致性的配置并发读写,可以满足几乎所有的配置中心应用场景。

配置监听


配置监听需要达到的效果跟发布和获取有点不一样,一个配置发生变化了,怎么通过一个类似消息的方式把变化推送到客户端,客户端能及时知道变化了,同时内部采取一些相应的动作。我们做的是一种类似于长轮询的方式的方式去做,客户端会定期的在发起监听的这个配置的时候会发起一个30秒的长连接,这个长连接会带到他所需要配置,如果在这30秒里面没有配置发生变化的时候,那么30秒内就返回一个空值,在接下来的下一个30秒会再发起一个连接。那么在这30秒内如果是发现了任何的变化的时候,服务端会把发生变化的配置及时的通过长连接,然后连接会返回这个客户端,客户端就可以拿到这个变化值。这种推拉结合的策略,做到了在长连接和短连接之间的平衡,实现了让服务端不用太关注连接的管理,效果上又获得了类似TCP长连接的信息推送的实时性。

ACM主要应用场景

传统的配置文件无法很好的解决分布式系统的配置管理诉求,虽然ACM是个工具,但是具有大能量,因为能通过配置中心本身延伸出特别多的场景。对于配置安全管理、发布环境管理、程序包发布管理、业务场景动态推送、动态算法推送等方面ACM都可以很好的解决对应的需求。

场景1 微服务应用架构下的配置管理


在传统架构的应用发布过程中,修改一个应用配置就需要将整个应用重新打包发布,整个过程非常繁琐,且容易出错。在基于 ACM 的微服务场景下,应用的重要配置信息被发布到 ACM 中。新的配置发布并不依赖配置打包。在新版本的配置发布后,所有应用立即生效,如图所示。
采用 ACM 作为配置中心为微服务带来的好处是,所有配置中心化,在应用众多的情况下配置管理变得更加方便。所有配置不依赖版本发布,使得配置变更更加灵活。ACM 天生支持灰度发布和回滚,使得配置的变更发布在微服务架构下变得更加安全。

场景2 分布式架构下的服务治理下的服务治理


怎么防止因为性能过载而导致的雪崩效应,一定是要做些动态的流控的。传统方法是去改配置文件,有了配置中心以后可以把相应的配置的变更也是呈现在配置中心里,那么当流控发生变化的时候只需要在配置中心里面改流控的阈值,阈值会动态的推到下面所有订购阈值的客户端,那么这样就会做到一个相应的流控。
采用ACM为分布式架构下的服务治理带来的好处是,良好的性能,通过采用配置推送的方式来监听服务治理信息,对性能几乎无影响。相关的服务治理信息可以秒级推送到,响应时间迅速。当限流降级以后还可以通过秒级配置回滚来恢复状态。

场景3 应用业务场景动态推送


现在的电商总会有一些的运营活动,比如说六一儿童节就会在相应的时间段推一些和小朋友相关的产品。最常规的方法大家马上会想到的可能是做一个新的发布,到那个时间点推一批应用上去,这样应用程序就会相应的变更。但是用了配置中心以后,这一过程会得到非常大的简化。具体的就是把对应的场景写到配置中心里,在服务端展示的业务代码里面,其实是订阅配置中心里一段的代码,代码如果需要根据场景发生变化的时候把这个代码在配置中心进行一个变更,所有的业务代码会及时的推送到服务器中,那么对应的场景就会发生变更。通过这种方式大大降低了发布的频次提高了业务的敏捷性。

场景4 大数据实时计算算法调整


这是业界做监控非常典型的一个例子,我们在做性能监控的时候,会有操作系统和应用的数据通过消息对进到流计算里做一些汇总。监控的时候实时报警怎么做?在做计算的时候分布式节点很多,当报警的阈值发生变更的时候是需要通知到所有的节点的。在这块阿里也是通过配置中心去做的,应用计算参数动态配置,动态生效,生效时间块,性能影响低。

场景5 企业级互联网架构下的异地多活场景


在异地多活里面有很多场景会用到ACM,这里只讲一个简单的例子。在阿里巴巴内部,容灾多活架构的核心算法,ID分片和对应的的路由规则均采用ACM来动态推送。其中,相应的客户端和服务端,如RPC,MQ,DB都植入了路由路径。当容灾演练或者真实灾难发生时,管理员只需要动态的推送规则,相应的规则会影响到所有架构组件。使得基础架构和容灾逻辑解耦,具体的路由逻辑由容灾规则切换决定。生效快,理论上容灾的切换规则可以秒级推送到十万级别机器。
Demo
在对用户进行用户中心改造的时候发现用户有两点需求,第一点是从运维效率去考虑,将配置变更从之前的几个小时的级别变成几分钟到几秒的级别,带来了效率的极大提升,运维成本的大幅下降。第二点是安全的诉求。
为什么用了配置中心以后它的代码里面就不需要出现这些敏感信息了?
使用配置中心之后把这些业务的数据全部抽离出来,放到配置中心里,发布之后所有的这些镜像都是一样的,当需要配置变更的时候只需要到控制台去修改发布即可。
在ACM上把发布环节跳过的话,怎么保证配置能快速回滚,怎么能记录历史发布记录?
ACM在这方面做了一个历史版本的特性,当用户需要改错的时候,可以去查之前发布的历史版本,找到对应的版本点进去立即回滚就可以回到之前的版本。
我们ACM产品目前预计会长期免费,所以欢迎大家去使用。

原文链接

分享到:
评论

相关推荐

    ACM助力企业IT服务快速迭代.pptx

    《ACM:重塑企业IT服务快速迭代的力量》 在当前数字化转型的时代,企业的IT服务迭代速度已成为竞争优势的关键因素。...选择ACM,就是选择了高效、安全且灵活的配置管理,为企业的IT服务迭代注入新的活力。

    藏经阁-ACM 助力 企业IT服务快速迭代.pdf

    藏经阁-ACM 助力 企业IT服务快速迭代 ACM(Application Configuration Management,应用配置管理)是阿里云产品之一,前身为阿里中间件配置中心工具Diamond。ACM 的主要功能是对应用配置进行集中管理和推送,旨在...

    ACM助力企业IT服务快速迭代.pdf

    阿里云产品专家 杨奕、阿里云研发专家 李艳林在2018云栖大会·南京峰会中做了题为《ACM 助力 企业IT服务快速迭代》的分享,就ACM 历史、ACM 产品基本形态和针对问题场景、ACM产品优势等方面的内容做了深入的分析。

    ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛

    ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛

    天融信新ACM集中管理平台-配置手册

    在介绍天融信新ACM集中管理平台的配置手册内容时,我们可以从以下几个方面来展开,包括平台概览、配置步骤、管理功能、监控机制、系统维护以及网络工具等方面的知识点。 首先,天融信新ACM集中管理平台是一个旨在对...

    acm-ioit-react

    【标题】"acm-ioit-react" 涉及的知识点主要集中在React技术栈和ACM(Association for Computing Machinery)的活动网站开发上。React是由Facebook开发并维护的一个开源JavaScript库,主要用于构建用户界面,尤其是...

    ACM STL的应用

    ACM STL的应用是指在国际大学生程序设计竞赛(ACM/ICPC)中广泛使用的C++标准模板库(Standard Template Library, STL)的应用。STL是C++语言中一种非常重要和强大的工具,它提供了一系列数据结构和算法的实现,包括...

    SANGFOR_aCMP_V6.0.15_深信服企业级云aCMP用户手册.pdf

    【深信服企业级云 aCMP 用户手册】是深信服科技股份有限公司针对其aCMP 6.0.15版本的云管理平台所编写的一份详细指南,旨在帮助用户理解和操作这一云管平台。手册涵盖了从基础概念到高级功能的全方位介绍,适合网络...

    ACM PRO ACM PRO ACM PRO

    ACM PRO ACM PROACM PRO ACM PROACM PRO ACM PRO

    acm试题答案acm

    【标题】"acm试题答案acm" 涉及的主要知识点是ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest,简称ICPC或ACM/ICPC)的解题策略与技巧,以及如何寻找和理解比赛题目答案。ACM是一项...

    高通/MTK平台ACM串口驱动(USB转ACM串口)

    在IT领域,ACM(Abstract Control Module)串口驱动是一种重要的接口技术,它允许通过USB(Universal Serial Bus)连接来模拟传统的串行通信接口。在本文中,我们将深入探讨高通和MTK平台上的ACM串口驱动以及如何...

    ACM地址ACM地址

    在IT领域,ACM(Association for Computing Machinery)不仅是一个国际性的计算机专业组织,还与程序设计竞赛紧密相关,尤其在高校中,ACM程序设计竞赛是衡量学生算法设计与编程能力的重要标准。从给定的文件信息来...

    ACM ACM ACM讲义.ppt

    ACM(Association for Computing Machinery)程序设计大赛是全球范围内一项极具影响力和权威性的大学生编程竞赛,由美国计算机协会(ACM)主办。国际大学生程序设计竞赛(ICPC,International Collegiate ...

    acmacm经典题库

    "acmacm经典题库"是一个专门为ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)参赛者准备的学习资源集合。ACM竞赛是全球范围内影响力极大的编程比赛,旨在提升大学生的算法设计、问题...

    acm stl

    ACM比赛强调快速解决问题,而STL提供的数据结构和算法可以快速实现复杂的数据操作,因此STL在ACM领域的应用非常重要。 1. 容器: STL提供了多种容器来存储和管理数据,如vector、list、deque、set、map等。vector...

    acm.rar_ACM java_java package acm

    "acm.jar" 文件通常包含了一些为这类竞赛设计的预封装的工具类库,方便参赛者快速实现常见的算法和数据结构。 "acm.jar" 包含的Java包"acm" 提供了多种功能,如读取输入、图形绘制、数学运算等,这些都是在解决算法...

    上海交大ACM模板_上海交大ACM模板_ACM模板_

    上海交通大学ACM模板是针对计算机科学领域中算法竞赛和考研复试机试的重要参考资料,它集成了许多编程竞赛中常用的数据结构、算法以及解题策略。这个压缩包包含了一个名为"上海交大ACM模板.pdf"的文件,我们可以期待...

    ACM.rar_ACM_ACM Hwang .p_ACM java_pku 1689 rubbery_ppt

    【描述】提到这个压缩包是“ACM的重要PPT资料”,说明其中的文件很可能是讲解 ACM 程序设计竞赛的关键概念、策略和技巧的幻灯片,适合初学者用来快速入门和提升编程竞赛能力。"对初学者非常有益处" 意味着这些资料...

Global site tag (gtag.js) - Google Analytics