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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

云栖小秘书 2016-09-01 11:11:23 浏览10786
展开阅读全文
在这个移动互联网占据人们生活的大部分休闲时间的今天,对于APP而言,其无线网络性能就决定了用户体验。可以这样说,APP是棵树,其Server端的业务服务是树根,APP的业务功能是树枝,那么这棵树的树干就是无线网络通讯。其重要性不言而喻,本文就为大家分享万人低头时代,支付宝APP无线网络性能该如何保障。

直播视频:点击进入

PDF下载:点击进入

以下为整理内容。

---------------------------------------------------------------------------------------------------------------------------------

背景概述

首先看一个典型案例:用户用完餐后,使用支付宝扫码进行支付,但因网络不稳定导致数次支付失败,最终只能选择现金结账。很多用户会对这样的案例有一定的感触,可能在日常生活中经常遇到,而这对于无线网络的技术研发人员而言,却无法容忍的。设想一下,如果一个APP的无线移动网络失败率降低千分之一,会产生怎样的效应?
如果以每天一亿笔无线交易进行计算的话,失败率降低千分之一,那么每天成功交易数会增加10万笔,一年就能挽回3到4千万笔的交易,由此可以看出无线网络通讯对于APP的重要性。

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

             de66af5ae4e25be8950f974c50e534a150fc81a9

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

             2cdf098bbbafca57d550d08600d873e833eb41d7

对于无线网络的挑战,出现在端到端的通讯过程,从终端网络请求开始到运营商的接入网到核心网,并最终传输到机房。在整个过程中会存在很多问题比如:终端受限,RRC状态机切换延迟,整个移动网络表现出的是高延时,低带宽的特点,并且具有高误码率,高丢包率,并且整个链路不稳定,链接时好时坏,可能还会出现劫持和篡改等问题。

             191afd62b4b7ee011dfded3acf024e8049c12ffd

结合业务和性能可以将挑战分为三个部分:
  1. 业务差异化的诉求。表现在网络的触达方式的差异化,以及交互形式的差异化,相比于原来的文字消息,图片以及视频渐渐成为主流。
  2. 复杂的移动网络环境。无线接入是属于非实时在线型的,并且与有线网络不同,无线网络的动态性更强,基础移动网络环境多样,三大运营商和2,3,4G网络各不相同,并且用户的访问是随时随地出现的。
  3. 性能需求。包括超大流量的应对和整体的稳定性。
面对这些挑战,该如何保障无线网络的性能呢?

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

             5f94d3283a05660a5ee6e682aa450dd6acf950ed

在日常的铁路运输中,铁路和铁轨组成了整个运输网络,相当于网络架构;运行在其上的不同类型的火车类比于网络上不同的协议;火车的路线以及时刻表相当于网络的策略;而对于铁路运输的调度就相当于网络的运营管控。所以综合考虑网络的架构、协议、策略和运营才能为用户提供高效的无线网络服务。

网络设计基础

在这一部分将讨论关于网络设计基础包括支付宝APP的网络架构以及协议的选择。
支付宝的网络基础架构如图:
             56ae0df6038ed2f7d4a1e6bf310b2bef24e56768
请求会通过核心网以及主干网进入机房的LVS进行负载均衡,之后达到接入网关,接入网关进行协议处理以及加解密,经过接入网关的处理,请求会进入下层的服务网关,最后到达业务系统再到DB。这里的服务网关主要分为两类:请求响应模式的API服务网关,支持增量更新的推送服务网关。
对于整个架构而言,经常会被问及两个问题:终端网络异常该怎么办?以及如何应对超大流量?
对于终端网络的管控,主要有两个模块完成:终端管控模块和移动管控中心。这两个模块相互配合,让终端网络高可控,达到分钟级的容灾调度能力。整体的功能特性包括HTTPDNS,全网调度,多维度策略精细控制,独立通道加安全校验,以及通过推拉结合的方式使决策快速生效。
             41cdc07d83bdfede13ca8f3af44739aa1f920c39
另一问题就是如何应对超大流量的并发,对于淘宝以及支付宝而言,这也是必须面对的挑战。特别是在双十一、双十二这样的购物节,流量往往是平时的几倍甚至几十倍,必须要考虑整体网络接入层能否应对突增的巨大网络流量。
从架构上讲,主要有三种方式应对超大流量:
  1. 网络过载保护。限制连接数、新建连接数、包总量,降低过载时的用户体验。
  2. 多级网关。从接入网关,到业务网关再到服务网关,采取了流量漏斗的模式,从亿级到千万级再到百万级形成了多层的流量防控。
  3. 有损服务。其核心是将重要资源分配给重要的业务,需要对服务进行优先级划分,同时也要在多级别有损中考虑终端的体验,对于不同的服务给予用户最优的交互形式。
             c2d3ddebf202998aa81b6c712c330f8fcfdf8e13

有了好的架构基础,想要网络快起来就必须选择合适的协议。图中是支付宝APP的网络协议结构,最下面的传输层使用TCP协议,我们对安全传输协议SSL/MTLS进行了改进并提出了更适合移动网络的MTLS,在表示层有谷歌的SPDY协议,考虑到无线网络的特殊性,我们自定义了MMTP协议,最上层就是应用层的协议,如常用的HTTP,以及移动RPC协议等。在架构演进过程中,我们逐渐放弃了HTTP、SPDY协议而选择使用自定义的MMTP协议,这是因为支付宝APP的业务场景在变,需要对网络进行精细控制,而SPDY和HTTP2.0更适合于移动电商等场景,其控制粒度不够细。

             29423f762d9624b4a35df0fdba7e667942bfb8bf

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

             da6a0bd5f7cbbc334ebe3d8c146dbcb29c184e42

我们认为TCP协议是在ip网络上提供可靠的连接服务;而MMTP协议是面向不稳定的无线网络,提升移动服务的可靠性。
针对无线网络,我们在网络协议上另一个亮点就是MTLS协议。首先看下传统安全传输协议SSL/TLS在无线网络环境下存在的弊端
             423aa164b9732cd9a5f95743ce7af7b223a0bd79
正是基于这些缺点和痛点,我们进行了优化并提出了MTLS协议:
             61aed64a627821a8442f95d53c289e25d88b0d19

网络优化实践

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

网络减法:

             565a282395f67f9089c170e34e8ab6cdc11ad73b

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

             8e3a1dc39b26598eb291d491a6bc44cc07200499
应对这样的网络,应该思考这些问题:
  • 终端网络状态是变化的,那什么时候去建连?
  • 采用什么方式建连?
  • 建好的连接该怎么保持才能持久?
  • 如果网络不稳定了,怎么才能第一时间发现这个链路出现了问题? 如果是受限网络,又要怎么应对?
面对这些问题,需要从几个角度出发:建连时机、建连策略、连接保持,超时控制,假连接以及特殊网络。
             a3e014bf5163c629c6461f76d0cfcd468e13289e

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

             9dfd8cd0b23374229cbb5d569818e81340311d26

业务治理:

             a01f4a0d02050eecfc20e68d078a3547a3efb036
之前提到了终端受限问题,其实在做所有的网络优化策略时都要考虑电量和流量的消耗:
             d69b273b429447983e85a42192da6d3e9ebdd7fe
在网络优化策略的最后谈一下优化工具以及平台:
             44ad6c19a41a23aac683a33f86a6259003c62ad4
在拥有了好的架构基础和好的优化策略之后还需要一套好的保障机制来促进网络良好有序地运行,接下来谈一下支付宝网络数据运营方面所做的工作。

网络数据运营

网络数据运营是网络与数据相结合,使用数据手段指导网络的优化策略的实施。
网络数据化运营全局视图:
             0af9539c04d87c67afb1993661ca3c2fe6448843
首先第一步就是进行网络数据化,确定整体网络数据源,因为掌握的信息越多,就越有利于了解网络的实际情况。因此在做网络数据化的时候进行了全方位的数据采集,数据采集之后进行存储,再之后进行数据分析,最后是数据的解释与展现以及数据使用。
通过整套体系的运行,使得整个网络的规划更具有目标性,试错更具有针对性。在整体数据运行里面,有一点相信大家比较感兴趣就是:如何评价网络技术的好坏?
评价网络的性能需要根据网路核心指标:
             ac5442f42d798b19321888b6ea1bd59fa3cca873

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

案例1:

             b4cb5fa734d1c328a1f08a40124a1fc38f3184df

案例2:

             f8498ec8bb4faef902841c2b3bfb3c9ad780cc3b

总结

和大家分享一下支付宝APP在无线网络性能保障上的认识:
             7979e18a0643cb182db147bde4f91a9732770572
最后为大家介绍一下支付宝APP在未来无线网络技术方面的努力方向:
  • IPv6
  • QUIC
  • 厂商合作
  • 网络pop节点加速

网友评论

登录后评论
0/500
评论
云栖小秘书
+ 关注