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

简介: 本文采编于蚂蚁金服高级技术专家梁耀斌(追源)在 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. 兼容不同的基础设施
    不同客户有不同的基础设施,在系统架构设计时需要兼容不同的基础环境。
  2. 不同主体之间的协同

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

挑战一 :高可用和成本

在介绍高可用和成本之前,首先要看看 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 核心组件:支付宝如何为移动端产品构建舆情分析体系?》

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

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

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

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

QRCode

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

期待你的加入~

目录
相关文章
|
5天前
|
存储 监控 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第9天】 在本文中,我们将深入探讨如何在后端开发中构建一个高效的微服务架构。通过分析不同的设计模式和最佳实践,我们将展示如何提升系统的可扩展性、弹性和维护性。我们还将讨论微服务架构在处理复杂业务逻辑和高并发场景下的优势。最后,我们将分享一些实用的工具和技术,以帮助开发者实现这一目标。
|
2天前
|
敏捷开发 监控 API
构建高效微服务架构:从理论到实践
【5月更文挑战第18天】 在当今快速发展的软件开发领域,微服务架构已经成为一种流行的设计模式,它通过将大型应用程序分解为一系列小型、独立的服务来提高系统的可伸缩性、弹性和维护性。本文旨在探讨如何从理论走向实践,构建一个高效的微服务架构。文章首先介绍微服务的基本概念和优势,然后详细讨论了在设计和部署微服务时需要考虑的关键因素,包括服务划分、通信机制、数据一致性、容错处理和监控策略。最后,结合具体案例分析,展示如何在现实世界中应用这些原则,确保微服务架构的高效运行。
|
2天前
|
测试技术 持续交付 API
构建高效的微服务架构:后端开发的现代实践
【5月更文挑战第18天】在数字化转型的浪潮中,微服务架构已成为企业追求敏捷、可扩展和容错能力的关键解决方案。本文将深入探讨微服务的核心概念,包括其设计原则、技术栈选择以及实施过程中的挑战与对策。通过对微服务架构实践的详细剖析,旨在为后端开发人员提供一套构建和维护高效微服务系统的实用指南。
|
3天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构的演变与实践
【5月更文挑战第17天】 在数字化转型的浪潮中,企业正迅速采用云原生技术来构建和部署应用程序。本文将深入探讨云原生架构的核心概念、发展历程以及如何在现代IT环境中实现敏捷、可扩展和高效的服务。通过对容器化、微服务、持续集成和持续部署(CI/CD)等关键技术的分析,我们将揭示如何利用云原生方法论来优化资源利用、加快产品上市速度,并提高系统的可靠性。
13 3
|
3天前
|
Android开发
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
|
4天前
|
边缘计算 负载均衡 网络协议
B站千万级长连接实时消息系统的架构设计与实践
本文将介绍B站基于golang实现的千万级长连接实时消息系统的架构设计与实践,包括长连接服务的框架设计,以及针对稳定性与高吞吐做的相关优化。
23 9
|
5天前
|
消息中间件 Go API
基于Go语言的微服务架构实践
随着云计算和容器化技术的兴起,微服务架构成为了现代软件开发的主流趋势。Go语言,以其高效的性能、简洁的语法和强大的并发处理能力,成为了构建微服务应用的理想选择。本文将探讨基于Go语言的微服务架构实践,包括微服务的设计原则、服务间的通信机制、以及Go语言在微服务架构中的优势和应用案例。
|
5天前
|
监控 测试技术 持续交付
构建高效可靠的微服务架构:后端开发的现代实践
【5月更文挑战第14天】 随着数字化转型的浪潮,企业对于灵活、可扩展且高效的后端系统的需求日益增长。本文旨在探讨如何通过微服务架构来实现这些需求,涵盖微服务设计原则、开发流程以及持续集成和部署(CI/CD)的最佳实践。文中还将讨论监控、日志管理与容错机制,以确保系统的可靠性和性能。
|
5天前
|
机器人 Unix C++
ROS机器人编程技术架构命令应用
ROS机器人编程技术架构命令应用
6 1
|
5天前
|
Cloud Native 安全 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第12天】 随着数字化转型的浪潮不断冲击传统IT架构,企业亟需灵活、高效且可扩展的技术解决方案以保持竞争力。云原生技术作为一种新兴的系统构建方式,以其独特的弹性、微服务和持续交付等特性,成为推动企业快速响应市场变化的关键因素。本文将深入探讨云原生架构的核心组件,分析其如何促进企业的敏捷性,以及在实施过程中可能遇到的挑战和解决策略,为企业采纳云原生技术提供参考。