广域网数据传输关键技术

阿凡达2018-07-20 10:39

内容传输网络

概述

根据Gartner公司的调查报告,如果一个网站的页面获取时间超过3秒,40%用户将会流失。而根据google公司的统计,每增加500ms延时将流失20%的流量。这些数据已经充分说明对一个互联网产品来说,用户响应时间这一关键性指标,直接决定着产品的用户体验。随着移动互联网近年来快速发展,伴随着移动互联网数据传输不稳定等先天特征,这一情况变得愈发严峻。”内容传输网络“这一章节,正是把解决问题的主要关注点,放在如何去优化用户App程序到服务端网站之间的数据传输方式,使得用户和服务器之间数据传输时间能够缩短,提升用户体验。

技术分类

上图大致描述了提升互联网产品用户响应时间的主流技术方案,按照优化技术手段所要解决问题的侧重点不用,主要划分为客户端优化技术和网络传输中间层优化技术。

客户端优化

页面优化(frontend optimize FEO)

页面优化对应用程序不透明,需要开发人员根据实际情况进行深度优化,而带来的效果提升往往是所有手段中最显著的。具体的方法有很多,例如:domain sharding、prefetch等等,具体请参考:《Front end optimization methods and their effect》

数据压缩

由http 1.1规范引入,可以通过http content-encoding字段来指定压缩格式。根据统计数据,文本数据压缩后能够节省75%的传输量,对整个网站的数据流量能够节省37%。

数据压缩的缺点主要是两个:造成客户端(尤其是手机端)额外CPU开销;对于某些类型内容(图片、视频等)的数据压缩效果不佳。

数据去重

数据去重的基本思想,是通过在传输前判断冗余数据,使得多份数据传输实际上只传输一次。按具体去重维度判断,有三种:whole file hash、sub-file hash、delta encoding。

网络传输中间层优化

NCDN服务

NCDN服务是由网易NOS团队开发的一款CDN产品,基于网宿科技在全国的500多个CDN节点和30多个海外节点,为用户的web请求提供就近接入,提升用户响应时间。提供的加速类型包括:

  1. web加速。主要是指页面、图片业务的加速,一般对服务质量要求较高,文件较小。
  2. download下载加速。主要是指游戏包、安装包等文件较大的业务的加速一般对服务质量要求中等。因为文件较大,下载平台针对大文件的缓存做了较多的优化,比如Range请求一般不能缓存,下载平台开启了分段缓存功能,可以实现Range缓存,减少回源量。
  3. stream媒体点播加速。主要是指http类视频业务的加速。

同时,NCDN提供以web云计算方式进行自助管理,自助进行加速域名的增删改查,定制缓存规则和防盗链规则,实时查看加速域名流量信息等。

NOS上传加速

NOS(网易对象存储服务)上传加速,利用分布于全国的边缘节点,移动端用户就近接入,更快地将数据上传到NOS中,提高终端用户上传体验。业务特色包括:

  1. 智能判断用户IP地址,选择离用户最近的边缘节点作为上传中间代理,加速上传速度;
  2. 实现断点续传等通用上传功能,简化产品方业务逻辑;
  3. 实现上传回调功能,使产品方能第一时间得到上传成功通知;
  4. 提供上传平均速度、成功率等统计功能;

Netease MAM

Mobile Application Monitor(MAM) 是专为移动端开发的统计监控插件,在产品方应用程序发布前把MAM Agent编译到App程序中,就能够以透明的方式采集应用程序互联网操作的统计信息,发送到服务端进行统计分析。

主要功能:监控应用HTTP请求响应的各项数据:DNS解析时间,请求响应时间,上传下载流量,首包到达时间等。

七牛云存储

严格意义上讲,七牛云存储是一个类似aws S3的云存储服务,跟数据传输网络没有关系。但是在某些特定场合下确实能够起到加速应用程序文件上传速度的效果,而且网易的一些互联网产品已经使用了七牛云存储进行文件上传加速。

NOS在数据存储上采用的方式是中心机房集中存储,所有数据全部上传到中心机房后上传操作完成。而七牛的模式是采用分布式存储,用户数据的副本就近存储到离用户较近的存储集群。因此利用这个特性,如果产品方应用程序能够保证用户上传数据后并不会第一时间马上拉取该数据,就能够使用户上传时间大为缩短。

使用七牛云存储进行上传加速时,具体的业务逻辑为:

  1. 用户上传数据到七牛云存储;
  2. 上传到七牛云存储成功后立即返回用户上传操作完成;
  3. 产品方之后采用异步模式再把数据从七牛云存储拉取到网易的数据中心;
  4. 等数据拉取完成后,即可保证用户能够获取到上传数据内容;

网易UU

对于产品中的动态请求,由于每次请求内容和返回内容都不同,需要服务器实时处理,无法通过传统CDN方式进行加速。此种情况下一般的加速方案是部署尽可能多的边缘节点,通过类似ospf的选路算法,获取一条TTL总和最短的路径作为最优路径。

网易UU(uu.163.com)是网易自主开发的一款动态请求加速产品,主要服务对象为实时互动游戏。第三方产品中,网宿MAA也提供了类似服务,能够对动态请求进行路径优化。并且对于移动手机端,还进行了特别的通信协议改进。

HTTP协议优化

主要是指HTTP1.1引入的几个特性:

  1. http response结果压缩;
  2. http persistent connection;
  3. http pipeline(在复杂INTERNET环境下通用性很成问题);

这些技术大家都比较熟悉,不再详细展开。

SPDY

SPDY是由google主推的协议层优化,事实证明在某些场合下能够取得很不错的优化效果,并有望加入到HTTP 2.0标准中。SPDY的特性包括:

  1. HTTP Header压缩;
  2. 多个http请求复用于同一个底层socket连接;
  3. 完全基于SSL,提供了数据加密机制;
  4. 提供server端push功能;

需要指出的是,根据第三方的详尽测试结果,在高延迟网络下(典型的如移动端2G网络)能够取得不错效果;而在高丢包环境下可能性能反而会下降。

TCP协议优化

TCP为应用开发者提供了面向连接的可靠传输服务,极大降低开发成本。但是在恶劣网络环境下的性能却往往直接导致用户体验变差。协议优化手段很多,常用方法归纳起来有两类:

  1. 修改拥塞窗口算法;
  2. 修改TCP初始窗口大小;

我们公司以往在Nginx前端机部署过zetaTCP网络优化库,取得了较好效果。

适用场景对比

下面给出一个对比表格,供产品方在进行技术选型时作参考。

优化技术 适用场景
NCDN 获取的数据为静态内容、流媒体
NOS上传加速 对用户上传操作响应时间有较大优化
MAM 监控DNS、CDN运行情况,便于定位问题
七牛 对于用户上传操作,并且上传内容并不需要第一时间回看,较适合
UU 用户请求类型为动态请求,并且对操作响应时间有极高要求,如在线互动游戏
HTTP response compact 推荐开启
HTTP persistent connection 推荐开启
SPDY 适用于移动手机端产品
TCP协议优化 经过较详细统计对比测试后,可开启


本文来自网易实践者社区,经作者邱似峰授权发布。