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

本文涉及的产品
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”

期待你的加入~

目录
相关文章
|
5天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
26 5
|
9天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
7天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####
|
7天前
|
消息中间件 缓存 Cloud Native
云原生架构下的性能优化实践与挑战####
随着企业数字化转型的加速,云原生架构以其高度解耦、弹性伸缩和快速迭代的特性,成为现代软件开发的首选模式。本文深入探讨了云原生环境下性能优化的关键策略与面临的主要挑战,通过案例分析,揭示了如何有效利用容器化、微服务、动态调度等技术手段提升应用性能,同时指出了在复杂云环境中确保系统稳定性和高效性的难题,为开发者和架构师提供了实战指南。 ####
20 3
|
7天前
|
运维 Kubernetes Cloud Native
深入理解云原生架构:从理论到实践
【10月更文挑战第38天】本文将引导读者深入探索云原生技术的核心概念,以及如何将这些概念应用于实际的软件开发和运维中。我们将从云原生的基本定义出发,逐步展开其背后的设计哲学、关键技术组件,并以一个具体的代码示例来演示云原生应用的构建过程。无论你是云原生技术的初学者,还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和实操指南。
|
7天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用架构中的实践与思考
【10月更文挑战第38天】随着云计算的不断成熟和演进,云原生(Cloud-Native)已成为推动企业数字化转型的重要力量。本文从云原生的基本概念出发,深入探讨了其在现代应用架构中的实际应用,并结合代码示例,展示了云原生技术如何优化资源管理、提升系统弹性和加速开发流程。通过分析云原生的优势与面临的挑战,本文旨在为读者提供一份云原生转型的指南和启示。
20 3
|
7天前
|
运维 Kubernetes Cloud Native
云原生技术在现代应用架构中的实践与挑战####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在实际项目中的应用案例,分析了企业在向云原生转型过程中面临的主要挑战及应对策略。不同于传统摘要的概述性质,本摘要强调通过具体实例揭示云原生技术如何促进应用的灵活性、可扩展性和高效运维,同时指出实践中需注意的技术债务、安全合规等问题,为读者提供一幅云原生技术实践的全景视图。 ####
|
7天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
7天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
7天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。

热门文章

最新文章