万人低头时代,如何保障APP无线网络性能?

摘要:

在本次蚂蚁金服与阿里云联合举办的在线金融技术峰会上,嘉宾心武与你们分享了支付宝APP近几年在无线网络方面所作的实践。面试

本文整理自心武的分享,在这个万人低头时代,对于大型APP而言其无线网络性能足以决定其市场地位,在应对业务差别化需求,复杂的无线网络环境等问题上,支付宝APP是如何保障无线网络性能的呢?安全

1. 背景概述

首先看一个典型案例:用户用完餐后,使用支付宝扫码进行支付,但因网络不稳定致使数次支付失败,最终只能选择现金结帐。不少用户会对这样的案例有必定的感触,可能在平常生活中常常遇到,而这对于无线网络的技术研发人员而言,却没法容忍的。设想一下,若是一个APP的无线移动网络失败率下降千分之一,会产生怎样的效应?网络

若是以天天一亿笔无线交易进行计算的话,失败率下降千分之一,那么天天成功交易数会增长10万笔,一年就能挽回3到4千万笔的交易,由此能够看出无线网络通信对于APP的重要性。架构

在咱们团队内部有一个很好的比喻:将一个APP比做一棵树,把树根看作是整个Server端的业务服务,将树根和树枝比做是APP的业务功能,那么这棵树的树干就是无线网络通信,它是端到端的链接,是用户服务触达的通道,也是用户体验的保障。并发

fa88712eabb592be93c3a6480e338d53.jpeg

同时咱们也意识到不一样的APP对于无线网络的需求级别也不相同,因此给出的建议是按照用户量进行划分。app

07b2b84e900f6a27168681639d83d9e0.jpeg

对于无线网络的挑战,出如今端到端的通信过程,从终端网络请求开始到运营商的接入网到核心网,并最终传输到机房,在整个过程当中会存在不少问题。负载均衡

好比:终端受限,RRC状态机切换延迟,整个移动网络表现出的是高延时,低带宽的特色,而且具备高误码率,高丢包率,而且整个链路不稳定,连接时好时坏,可能还会出现劫持和篡改等问题。ide

d0fc780ef7fb75c6e25d801800907161.jpeg

结合业务和性能能够将挑战分为三个部分:工具

  1. 业务差别化的诉求。表如今网络的触达方式的差别化,以及交互形式的差别化,相比于原来的文字消息,图片以及视频渐渐成为主流。性能

  2. 复杂的移动网络环境。无线接入是属于非实时在线型的,而且与有线网络不一样,无线网络的动态性更强,基础移动网络环境多样,三大运营商和2,3,4G网络各不相同,而且用户的访问是随时随地出现的。

  3. 性能需求。包括超大流量的应对和总体的稳定性。

面对这些挑战,该如何保障无线网络的性能呢?

核心目标是:稳定、可靠和快速。总体的性能保障思路能够参考现实生活中的铁路运输系统。

d7ff81bf032c5315bbd1be1a737dc3f8.jpeg

在平常的铁路运输中,铁路和铁轨组成了整个运输网络,至关于网络架构;运行在其上的不一样类型的火车类比于网络上不一样的协议;火车的路线以及时刻表至关于网络的策略;而对于铁路运输的调度就至关于网络的运营管控。

因此综合考虑网络的架构、协议、策略和运营才能为用户提供高效的无线网络服务。

2. 网络设计基础

在这一部分将讨论关于网络设计基础包括支付宝APP的网络架构以及协议的选择。

支付宝的网络基础架构如图:
61e355950467086ea3b23a2c5e769356.jpeg

请求会经过核心网以及主干网进入机房的LVS进行负载均衡,以后达到接入网关,接入网关进行协议处理以及加解密,通过接入网关的处理,请求会进入下层的服务网关,最后到达业务系统再到DB。

这里的服务网关主要分为两类:请求响应模式的API服务网关,支持增量更新的推送服务网关。

对于整个架构而言,常常会被问及两个问题:终端网络异常该怎么办?以及如何应对超大流量?

对于终端网络的管控,主要有两个模块完成:终端管控模块和移动管控中心。这两个模块相互配合,让终端网络高可控,达到分钟级的容灾调度能力。

总体的功能特性包括HTTPDNS,全网调度,多维度策略精细控制,独立通道加安全校验,以及经过推拉结合的方式使决策快速生效。

ba140bb9a862331cf4eb228b78e16b41.jpeg

另外一问题就是如何应对超大流量的并发,对于淘宝以及支付宝而言,这也是必须面对的挑战。特别是在双11、双十二这样的购物节,流量每每是平时的几倍甚至几十倍,必需要考虑总体网络接入层可否应对突增的巨大网络流量。

从架构上讲,主要有三种方式应对超大流量:

  1. 网络过载保护。限制链接数、新建链接数、包总量,下降过载时的用户体验。

  2. 多级网关。从接入网关,到业务网关再到服务网关,采起了流量漏斗的模式,从亿级到千万级再到百万级造成了多层的流量防控。

  3. 有损服务。其核心是将重要资源分配给重要的业务,须要对服务进行优先级划分,同时也要在多级别有损中考虑终端的体验,对于不一样的服务给予用户最优的交互形式。

2b8d6c7906fdf8bd7ba14934fac2491c.jpeg

有了好的架构基础,想要网络快起来就必须选择合适的协议。图中是支付宝APP的网络协议结构:

  • 最下面的传输层使用TCP协议,咱们对安全传输协议SSL/MTLS进行了改进并提出了更适合移动网络的MTLS;

  • 在表示层有谷歌的SPDY协议,考虑到无线网络的特殊性,咱们自定义了MMTP协议;

  • 最上层就是应用层的协议,如经常使用的HTTP,以及移动RPC协议等。

在架构演进过程当中,咱们逐渐放弃了HTTP、SPDY协议而选择使用自定义的MMTP协议,这是由于支付宝APP的业务场景在变,须要对网络进行精细控制,而SPDY和HTTP2.0更适合于移动电商等场景,其控制粒度不够细。

45a6831af912f05888ba4332d96c7deb.jpeg

那么MMTP协议究竟是什么?它是蚂蚁移动传输协议,是基于TCP的自定义应用协议,其基础以及特性以下:

02088700fb04de733ee897e0493c69d3.jpeg

咱们认为TCP协议是在ip网络上提供可靠的链接服务;而MMTP协议是面向不稳定的无线网络,提高移动服务的可靠性。

针对无线网络,咱们在网络协议上另外一个亮点就是MTLS协议。首先看下传统安全传输协议SSL/TLS在无线网络环境下存在的弊端:

b8539f21b1d5e568d51d16746cd1932b.jpeg

正是基于这些缺点和痛点,咱们进行了优化并提出了MTLS协议:

7a6072733c11306f8dc8302dcc5915f5.jpeg

3. 网络优化实践

从实践经验出发,咱们将无线网络的优化分为几个关键点,包括网络加减法,代码调优,业务治理以及电量&流量控制。

3.1 网络的减法:

d80a19bc58cd8a3565410855f423c569.jpeg

3.2 网络的加法,就是要勤于作一些重复的工做:

b21bee3bd8cb5749cb2cc19bb160c757.jpeg

应对这样的网络,应该思考这些问题:

  • 终端网络状态是变化的,那何时去建连?

  • 采用什么方式建连?

  • 建好的链接该怎么保持才能持久?

  • 若是网络不稳定了,怎么才能第一时间发现这个链路出现了问题? 若是是受限网络,又要怎么应对?

面对这些问题,须要从几个角度出发:建连时机、建连策略、链接保持,超时控制,假链接以及特殊网络。

1437de0a95259cca11a47b74a4eae52d.jpeg

网络优化的第三个方面试代码调优,而且持续进行代码调优,它所带来的性能提高每每会比多个策略性优化更显著。

2f2ea28f95f6aaacdce04687611357e9.jpeg

3.3 业务治理:

425db7a38a4db10733eb0ad290bbcbae.jpeg

以前提到了终端受限问题,其实在作全部的网络优化策略时都要考虑电量和流量的消耗:

75a17fbe827f91f8a31e452a1e905465.jpeg

在网络优化策略的最后谈一下优化工具以及平台:

ec852ce5ad79c72426f18036139b5dcb.jpeg

在拥有了好的架构基础和好的优化策略以后还须要一套好的保障机制来促进网络良好有序地运行,接下来谈一下支付宝网络数据运营方面所作的工做。

4. 网络数据运营

网络数据运营是网络与数据相结合,使用数据手段指导网络的优化策略的实施。

4.1 网络数据化运营全局视图:

3fb4494997288d4d6f8e10d02428ecb5.jpeg

首先第一步就是进行网络数据化,肯定总体网络数据源,由于掌握的信息越多,就越有利于了解网络的实际状况。

所以在作网络数据化的时候进行了全方位的数据采集,数据采集以后进行存储,再以后进行数据分析,最后是数据的解释与展示以及数据使用。

经过整套体系的运行,使得整个网络的规划更具备目标性,试错更具备针对性。在总体数据运行里面,有一点相信你们比较感兴趣就是:如何评价网络技术的好坏?

4.2 评价网络的性能须要根据网路核心指标:

b7a494a9613dd4d2a83a3da5bccc8931.jpeg

4.3 在网络数据化运营方面,分享两个案例让你们更好地了解它的实际价值:

案例1:

2241b68550fe16d15f2efcabc859759c.jpeg

案例2:

68b874237a5bb2f5923ccd4050f43c2e.jpeg

5. 总结

和你们分享一下支付宝APP在无线网络性能保障上的认识:

0711f705195a53f7a36c64e9532118be.jpeg

最后为你们介绍一下支付宝APP在将来无线网络技术方面的努力方向:

  • IPv6

  • QUIC

  • 厂商合做

  • 网络pop节点加速