摘要:
在本次蚂蚁金服与阿里云联合举办的在线金融技术峰会上,嘉宾心武与大家分享了支付宝APP近几年在无线网络方面所做的实践。
本文整理自心武的分享,在这个万人低头时代,对于大型APP而言其无线网络性能足以决定其市场地位,在应对业务差异化需求,复杂的无线网络环境等问题上,支付宝APP是如何保障无线网络性能的呢?
1. 背景概述
首先看一个典型案例:用户用完餐后,使用支付宝扫码进行支付,但因网络不稳定导致数次支付失败,最终只能选择现金结账。很多用户会对这样的案例有一定的感触,可能在日常生活中经常遇到,而这对于无线网络的技术研发人员而言,却无法容忍的。设想一下,如果一个APP的无线移动网络失败率降低千分之一,会产生怎样的效应?
如果以每天一亿笔无线交易进行计算的话,失败率降低千分之一,那么每天成功交易数会增加10万笔,一年就能挽回3到4千万笔的交易,由此可以看出无线网络通讯对于APP的重要性。
在我们团队内部有一个很好的比喻:将一个APP比作一棵树,把树根看做是整个Server端的业务服务,将树根和树枝比作是APP的业务功能,那么这棵树的树干就是无线网络通讯,它是端到端的连接,是用户服务触达的通道,也是用户体验的保障。
同时我们也意识到不同的APP对于无线网络的需求级别也不相同,所以给出的建议是按照用户量进行划分。
对于无线网络的挑战,出现在端到端的通讯过程,从终端网络请求开始到运营商的接入网到核心网,并最终传输到机房,在整个过程中会存在很多问题。
比如:终端受限,RRC状态机切换延迟,整个移动网络表现出的是高延时,低带宽的特点,并且具有高误码率,高丢包率,并且整个链路不稳定,链接时好时坏,可能还会出现劫持和篡改等问题。
结合业务和性能可以将挑战分为三个部分:
业务差异化的诉求。表现在网络的触达方式的差异化,以及交互形式的差异化,相比于原来的文字消息,图片以及视频渐渐成为主流。
复杂的移动网络环境。无线接入是属于非实时在线型的,并且与有线网络不同,无线网络的动态性更强,基础移动网络环境多样,三大运营商和2,3,4G网络各不相同,并且用户的访问是随时随地出现的。
性能需求。包括超大流量的应对和整体的稳定性。
面对这些挑战,该如何保障无线网络的性能呢?
核心目标是:稳定、可靠和快速。整体的性能保障思路可以参考现实生活中的铁路运输系统。
在日常的铁路运输中,铁路和铁轨组成了整个运输网络,相当于网络架构;运行在其上的不同类型的火车类比于网络上不同的协议;火车的路线以及时刻表相当于网络的策略;而对于铁路运输的调度就相当于网络的运营管控。
所以综合考虑网络的架构、协议、策略和运营才能为用户提供高效的无线网络服务。
2. 网络设计基础
在这一部分将讨论关于网络设计基础包括支付宝APP的网络架构以及协议的选择。
支付宝的网络基础架构如图:
请求会通过核心网以及主干网进入机房的LVS进行负载均衡,之后达到接入网关,接入网关进行协议处理以及加解密,经过接入网关的处理,请求会进入下层的服务网关,最后到达业务系统再到DB。
这里的服务网关主要分为两类:请求响应模式的API服务网关,支持增量更新的推送服务网关。
对于整个架构而言,经常会被问及两个问题:终端网络异常该怎么办?以及如何应对超大流量?
对于终端网络的管控,主要有两个模块完成:终端管控模块和移动管控中心。这两个模块相互配合,让终端网络高可控,达到分钟级的容灾调度能力。
整体的功能特性包括HTTPDNS,全网调度,多维度策略精细控制,独立通道加安全校验,以及通过推拉结合的方式使决策快速生效。
另一问题就是如何应对超大流量的并发,对于淘宝以及支付宝而言,这也是必须面对的挑战。特别是在双十一、双十二这样的购物节,流量往往是平时的几倍甚至几十倍,必须要考虑整体网络接入层能否应对突增的巨大网络流量。
从架构上讲,主要有三种方式应对超大流量:
网络过载保护。限制连接数、新建连接数、包总量,降低过载时的用户体验。
多级网关。从接入网关,到业务网关再到服务网关,采取了流量漏斗的模式,从亿级到千万级再到百万级形成了多层的流量防控。
有损服务。其核心是将重要资源分配给重要的业务,需要对服务进行优先级划分,同时也要在多级别有损中考虑终端的体验,对于不同的服务给予用户最优的交互形式。
有了好的架构基础,想要网络快起来就必须选择合适的协议。图中是支付宝APP的网络协议结构:
最下面的传输层使用TCP协议,我们对安全传输协议SSL/MTLS进行了改进并提出了更适合移动网络的MTLS;
在表示层有谷歌的SPDY协议,考虑到无线网络的特殊性,我们自定义了MMTP协议;
最上层就是应用层的协议,如常用的HTTP,以及移动RPC协议等。
在架构演进过程中,我们逐渐放弃了HTTP、SPDY协议而选择使用自定义的MMTP协议,这是因为支付宝APP的业务场景在变,需要对网络进行精细控制,而SPDY和HTTP2.0更适合于移动电商等场景,其控制粒度不够细。
那么MMTP协议到底是什么?它是蚂蚁移动传输协议,是基于TCP的自定义应用协议,其基础以及特性如下:
我们认为TCP协议是在ip网络上提供可靠的连接服务;而MMTP协议是面向不稳定的无线网络,提升移动服务的可靠性。
针对无线网络,我们在网络协议上另一个亮点就是MTLS协议。首先看下传统安全传输协议SSL/TLS在无线网络环境下存在的弊端:
正是基于这些缺点和痛点,我们进行了优化并提出了MTLS协议:
3. 网络优化实践
从实践经验出发,我们将无线网络的优化分为几个关键点,包括网络加减法,代码调优,业务治理以及电量&流量控制。
3.1 网络的减法:
3.2 网络的加法,就是要勤于做一些重复的工作:
应对这样的网络,应该思考这些问题:
终端网络状态是变化的,那什么时候去建连?
采用什么方式建连?
建好的连接该怎么保持才能持久?
如果网络不稳定了,怎么才能第一时间发现这个链路出现了问题? 如果是受限网络,又要怎么应对?
面对这些问题,需要从几个角度出发:建连时机、建连策略、连接保持,超时控制,假连接以及特殊网络。
网络优化的第三个方面试代码调优,并且持续进行代码调优,它所带来的性能提升往往会比多个策略性优化更显著。
3.3 业务治理:
之前提到了终端受限问题,其实在做所有的网络优化策略时都要考虑电量和流量的消耗:
在网络优化策略的最后谈一下优化工具以及平台:
在拥有了好的架构基础和好的优化策略之后还需要一套好的保障机制来促进网络良好有序地运行,接下来谈一下支付宝网络数据运营方面所做的工作。
4. 网络数据运营
网络数据运营是网络与数据相结合,使用数据手段指导网络的优化策略的实施。
4.1 网络数据化运营全局视图:
首先第一步就是进行网络数据化,确定整体网络数据源,因为掌握的信息越多,就越有利于了解网络的实际情况。
因此在做网络数据化的时候进行了全方位的数据采集,数据采集之后进行存储,再之后进行数据分析,最后是数据的解释与展现以及数据使用。
通过整套体系的运行,使得整个网络的规划更具有目标性,试错更具有针对性。在整体数据运行里面,有一点相信大家比较感兴趣就是:如何评价网络技术的好坏?
4.2 评价网络的性能需要根据网路核心指标:
4.3 在网络数据化运营方面,分享两个案例让大家更好地了解它的实际价值:
案例1:
案例2:
5. 总结
和大家分享一下支付宝APP在无线网络性能保障上的认识:
最后为大家介绍一下支付宝APP在未来无线网络技术方面的努力方向:
IPv6
QUIC
厂商合作
网络pop节点加速
来源:oschina
链接:https://my.oschina.net/u/4393390/blog/4715768