蚂蚁金服一站式、高可用架构实践与输出应用

本文涉及的产品
mPaaS订阅基础套餐,标准版 3个月
简介: 本文采编于蚂蚁金服高级技术专家梁耀斌(追源)在 InfoQ 主办的 QCon 2019 全球软件开发大会广州站的现场分享《蚂蚁金服一站式、高可用架构实践与输出应用》
作者:梁耀斌,花名追源,来自“追本溯源”,目前主要负责蚂蚁金融科技输出产品架构,关注 ToB 的数字化转型领域;2013 年加入到阿里技术保障部架构工具团队,从淘宝的异地多活架构的实施,到阿里集团的高可用架构和容灾体系建设,也曾经管理大规模的物理机集群和统一调度,对系统高可用和资源调度有比较深入的了解,希望能够把基础技术普适到更多需要的企业。

背景

本文采编于蚂蚁金服高级技术专家梁耀斌(追源)在 InfoQ 主办的 QCon 2019 全球软件开发大会广州站的现场分享《蚂蚁金服一站式、高可用架构实践与输出应用》,具体内容参考如下:

今天,我主要来介绍蚂蚁金融智能科技对外输出时,在高可用领域面临了怎样的架构挑战与解决方案。在具体内容展开之前,我们先认识下蚂蚁金服智能科技团队目前对外输出的技术产品体系,通过“BASIC”便可基本概括五大产品方向:Blockchain (区块链)、Artificial-Intelligence(人工智能)、Security(安全)、 IoT(物联网)和 Cloud Computing(云计算)。有了对产品发展方向的理解,对于我们理解后续的内容有较大的帮助。

mPaaS 是什么?

其中,mPaaS(Mobile PaaS)是源自于支付宝客户端的移动开发平台,为企业提供了移动开发、测试、运营及运维提供云到端的一站式解决方案,能有效降低技术门槛、减少研发成本、提升开发效率,协助企业快速搭建稳定高质量的移动客户端 App。

mPaaS 能够提供 Native、H5、支付宝小程序三大开发框架;100+ 的 UI 控件;以及包括扫码,本地缓存,客户端埋点等 20+ 功能性 SDK,可以让开发者快速接入搭建 App 所需要的基础能力。

客户端开发和移动中台能力都是针对 App 本身,一个完整的 App 需要通过服务端来获取更高阶的能力。除了客户端框架和基础组件之外,云端基础服务(如 API 网关、SYNC 数据同步、PUSH 通知等)提供了接口管理、流量管控、用户鉴权、H5 离线包、热修复包、性能分析等运营运维能力,构建了一个高稳定、高可靠以及高效率的后台连接服务。

ToB 和 ToC 的区别

每当我们向外部的客户介绍蚂蚁输出的技术能力时,往往会总结出三大优势:

  1. 超 10 亿用户的超级 App 技术架构体系
  2. 成功应对“双十一”及“新春红包”交易峰值的冲击
  3. 源于蚂蚁金服 10 多年的技术发展与沉淀

很显然,通过一次次的“战役”,蚂蚁金服目前的技术架构体系逐步从众多高并发业务场景中获得锤炼,完成了对高可用、高性能的架构特性打磨。系统的高可用性已成为互联网企业系统架构的基础要求之一,以支付宝为例,在每年的双十一期间,其每秒可支撑的交易量可达数十万笔,可以见得系统可用性的重要性。但系统可用,并不代表足够兼容。当我们逐步将技术能力打包对外输出,尝试在不同的业务场景中落地时,经常会听到这样的声音:

  1. 这个解决方案需要多少台物理机?容器?规模有多大?成本能否再降下去?
  2. 我们有 OpenStack,产品可以部署到我们的虚拟机平台上?
  3. 你们的产品有 hdfs,是否可以使用我们已有的 hdfs 产品?
  4. 我们有自己的运维平台,可以通过我们的运维平台管理你们的产品?

在 ToB 的业务场景中,除了强调“高可用”特性以外,“成本”和“兼容性”同时也是重中之重。随之而来的,这对我们在进行高可用架构的设计和复用方面提出了三大挑战:

  1. 高可用和成本的折中

客户的业务和自身环境的数字化有着不同的成熟度,对产品的高可用要求也有不同的看法,高可用不是客户考虑的唯一要素,需要结合成本看投资回报率。

  1. 兼容不同的基础设施

不同客户有不同的基础设施,在系统架构设计时需要兼容不同的基础环境。

  1. 不同主体之间的协同

客户的需求多样化,我们不能把所有的需求都满足和实现,需要和合作伙伴以及企业客户一起协同。在这个背景下,高可用的设计有着很大不同的视角。

挑战一 :高可用和成本

在介绍高可用和成本之前,首先要看看 ToB 的研发流程,我们会把整个生命周期分成两个部分:

  1. Global 层包括传统的开发,测试和版本发布流程。这里的发布不是互联网产品的 Deploy,而是产品的 Release。
  2. 其次,ToB 的 Deploy 和原有的模式有很大区别,体现在我们要管理客户非常多的环境,有很多 Local 的环境,如图所示。

Global 做厚做实

在 ToB 的研发流程体系中,要保证产品高可用能力,客户的现场不会出问题,我们需要在 Global 做更多更厚实的工作:

  1. 产品的变更准入强管控
  • 所有产品的变化都需要架构评审,包括新产品的入驻和后续依赖变更,确保架构合理性;
  • 代码质量自动化回归策略复用已有的能力,按照高要求严格执行。
  1. 依赖管理

在对外输出的场景下,内部产品研发流程有个非常关键的不同点,即在“交付环节”,我们需要在客户现场从 0 到 1 建立起来整套系统,而内部产品更多是在已有系统上升级;要保证交付时系统拉起正常,我们必须对系统各个组件的启动依赖和运行依赖进行管理,按照依赖顺序进行系统拉起;系统的依赖关系必须保证合理,不能有循环依赖。

  1. 完备的验证流程

除了自动化回归外,我们需要在 Global 层进行交付验证,高可用故障模拟验证,容量规划验证等等,让绝大部分的问题都在 Global 层暴露,简化客户环境执行的步骤,只需要部署并完成自动化回归验证。

Local 快速反应

虽然在 Global 层做了很多工作,但不能保证客户环境不出问题;对于客户的环境,我们把高可用能力建设从这几个角度来建设:

  1. 规避关键风险

虽然极端情况出现概率不大,但是出现一次对我们的信任影响很大;要保证极端情况下的系统和数据恢复能力,机房级容灾数据备份管理是两个最为重要的产品能力,需要重点建设。

  1. 快速识别风险

巡检系统定期扫描能够提前识别风险;监控的覆盖率需要持续建设,保证问题能够迅速暴露;出现异常后,故障定位模块能够帮助快速定位问题;在 ToB 输出领域,系统的架构和依赖相对稳定,故障定位比域内更加容易达到效果。

  1. 快速恢复

变更的强管控把所有变更收敛,预案系统和故障场景结合,出现问题后,能够快速找到恢复方案,一键恢复。

  1. 常态化的红蓝军对抗演练

Local 的高可用能力要有机制验证和保持:持续进行红蓝军演练,保证工具和系统的能力。

高可用和成本

要考虑高可用的成本,首先我们要对高可用能力进行量化,我们从两个不同维度来看:

  • Local 站点的高可用能力(图的右侧)
  • 产品的高可用能力(图的左侧)。

Local 站点高可用能力

Local 站点的能力通过变更管理,监控发现,容灾能力,自愈能力,故障数据分析等多个因素来确定高可用能力,给客户设定不同的等级,从低层级到高等级之间演进的路径是什么,付出的成本有多少。

产品维度高可用能力

产品维度的高可用能力评估主要从 Global 研发流程出发进行不同维度的量化分析,目的是提供让产品能力持续提升的量化指标。

以容灾能力为例,不同的容灾架构可以规避不同范围的灾难,但也需要付出不同的成本,我们的客户更多是选择同城双活的架构,这个架构有比较好的性价比;

挑战二 : 兼容不同的基础设施

开篇的时候我们已提到,面对客户不同的基础设施,蚂蚁在输出金融科技能力的过程中必须要承认的是,我们很难充分满足不同的业务需求和场景挑战。在这个背景下,我们需要逐步建设开放的能力,把已有的技术能力向合作伙伴和客户开放。

下图以底座支撑移动开发平台 mPaaS 输出为例,箭头右侧是客户对整个技术栈的每一层的开放需求:

开放的路还需要继续探索,我们会按这几个方面来推进:

  1. 内部建设支撑核心功能的工程能力

比如我们的产品核心功能支持 OpenStack 和 VMware,从研发,测试,交付,高可用,安全验证全流程都需要有环境来保障,不同技术层的组合会有很多,这对工程能力是巨大的挑战。

  1. 统一标准
  • 技术栈尽量贴合开源,特别在各个产品的 API 方面。
  • 拥抱云原生,云原生这个事实标准帮助技术快速传播,同时也让生态有了统一的概念和语言,加速了技术的应用和普及。
  1. 赋能
  • 系统和工具走开源路线
  • 把我们的核心能力和边界定义清楚
  • 提供核心能力的回归验证工具
  • 给合作方提供方便接入的验证环境
  • 通过赋能外部的合作伙伴或者客户来共同建设,逐渐增强我们内部的核心能力,形成正向的反馈。

挑战三 : 不同主体之间的协同

当我们面向不同的合作伙伴,面向不同的客户时,随之而来的问题就是怎么做协同?

不同企业的数字化成熟度不同,有些没有 SRE 团队,没有应急响应机制,即使有,职能和保障机制不尽相同;面对这样的环境,我们必须建立成熟简明的流程和机制,并且形成产品,让合作伙伴或者客户尽量闭环,减少和我们之间的“RPC通信”,这需要对我们的产品化能力有很高的要求。

  1. 定义服务流程

对有不同需求的服务对象提供不同服务能力,明确不同服务能力的流程和实施路径。

  1. 服务中台建设服务中台主要从 4 个方面来提升服务能力,赋能合作伙伴和客户有自主管理的能力
  • Local 的高可用能力产品
  • 提升服务效率提升的工具
  • 服务渠道的管理
  • 服务流程的透明化

最后

总结一下,蚂蚁在 ToB 的科技输出时,高可用领域面临有几个挑战:

  1. 高可用能力的成本

我们需要自身建设厚实的高可用能力,给客户提供不同阶段不同成本的高可用能力选项

  1. 兼容不同的基础设施

建设支撑核心能力的强大研发中台,通过开放协同更多的资源来满足客户的需求,再不断反馈提升我们的中台能力

  1. 如何处理好协同

定义好不同角色的协同流程,并形成系统和产品,赋能合作伙伴和客户,提升自主管理能力

在“互联网技术应用的 30年”,“产业互联网”的大潮下,帮助企业做数字化转型面临非常不一样的挑战。很显然,一套设计优异的系统架构往往不是一味追求前沿技术,而需要贴合实际业务场景和具体发展状态,打造清晰、合理的架构,确保业务高可用的同时,又具备持续扩容、发展的弹性。由于篇幅有限,今天我们提出了部分问题并结合已有的实践经验进行总结,欢迎大家指正和交流,也欢迎大家一同来分享高可用架构演进的实战经验。

往期阅读

《开篇 | 蚂蚁金服 mPaaS 服务端核心组件体系概述》

《蚂蚁金服 mPaaS 服务端核心组件:亿级并发下的移动端到端网络接入架构解析》

《mPaaS 服务端核心组件:移动分析服务 MAS 架构解析》

《蚂蚁金服面对亿级并发场景的组件体系设计》

《自动化日志收集及分析在支付宝 App 内的演进》

关注我们公众号,获得第一手 mPaaS 技术实践干货

QRCode

钉钉群:通过钉钉搜索群号“23124039”

期待你的加入~

目录
相关文章
|
2月前
|
数据采集 监控 API
移动端性能监控探索:iOS RUM SDK 技术架构与实践
阿里云 RUM SDK 作为一款性能体验监控采集工具,可以作为辅助 App 运维的强有力助手,提升您的问题排查效率。
211 17
|
2月前
|
存储 运维 分布式计算
零售数据湖的进化之路:滔搏从Lambda架构到阿里云Flink+Paimon统一架构的实战实践
在数字化浪潮席卷全球的今天,传统零售企业面临着前所未有的技术挑战和转型压力。本文整理自 Flink Forward Asia 2025 城市巡回上海站,滔搏技术负责人分享了滔搏从传统 Lambda 架构向阿里云实时计算 Flink 版+Paimon 统一架构转型的完整实战历程。这不仅是一次技术架构的重大升级,更是中国零售企业拥抱实时数据湖仓一体化的典型案例。
164 0
|
2月前
|
存储 SQL 消息中间件
从 ClickHouse 到 StarRocks 存算分离: 携程 UBT 架构升级实践
查询性能实现从秒级到毫秒级的跨越式提升
|
2月前
|
运维 监控 安全
公链开发中的高可用架构设计要点
本指南提供公链高可用架构的可复用流程与模板,涵盖目标拆解、先决条件、分步执行、故障排查及验收标准,结合跨链DApp与量化机器人案例,提升落地效率与系统稳定性。
|
2月前
|
人工智能 JavaScript 前端开发
GenSX (不一样的AI应用框架)架构学习指南
GenSX 是一个基于 TypeScript 的函数式 AI 工作流框架,以“函数组合替代图编排”为核心理念。它通过纯函数组件、自动追踪与断点恢复等特性,让开发者用自然代码构建可追溯、易测试的 LLM 应用。支持多模型集成与插件化扩展,兼具灵活性与工程化优势。
204 6
|
3月前
|
人工智能 Cloud Native 中间件
划重点|云栖大会「AI 原生应用架构论坛」看点梳理
本场论坛将系统性阐述 AI 原生应用架构的新范式、演进趋势与技术突破,并分享来自真实生产环境下的一线实践经验与思考。
|
3月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
2月前
|
机器学习/深度学习 自然语言处理 算法
48_动态架构模型:NAS在LLM中的应用
大型语言模型(LLM)在自然语言处理领域的突破性进展,很大程度上归功于其庞大的参数量和复杂的网络架构。然而,随着模型规模的不断增长,计算资源消耗、推理延迟和部署成本等问题日益凸显。如何在保持模型性能的同时,优化模型架构以提高效率,成为2025年大模型研究的核心方向之一。神经架构搜索(Neural Architecture Search, NAS)作为一种自动化的网络设计方法,正在为这一挑战提供创新性解决方案。本文将深入探讨NAS技术如何应用于LLM的架构优化,特别是在层数与维度调整方面的最新进展,并通过代码实现展示简单的NAS实验。
|
2月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路

热门文章

最新文章