正文
刚才已经讲过了,下载失败最多的其实就是用户主动选择下载,其次就是选文件失败,里面包括空间不足,也可能SD卡上锁或者是SD卡的写入问题,最后还有网络问题,这三块是最大的。
最下面这个图是我们提供的手游下载整体服务,这个服务我们重点关注几个指标,包括我们的下载成功率、转化率还有我们的成本和最优速度的选择。我们主要提供以下几个大的模块。
-
下载周期管理
首先是我们提供下载周期的管理,我们在应用市场或者在官网的下载,我们提供了一些游戏的分发打包以及分析工具;游戏内的版本更新提供了版本管理和回流率分析,对于资源包更新我们提供了资源管理以及资源校验纠错等等解决方案。
-
下载优化
第二个大块就是我们提供了协议优化模块,第一个是防劫持,劫持里面有两块,一块是域名劫持,一块是资源劫持。这两个劫持的解决方案等一会儿都会详细介绍,另外一个是预下载。
防劫持主要是解决了上面所对应的网络问题造成的失败率,预下载主要是对上面的用户主动取消下载造成的失败率,预下载这部分我们主要是提供增量下载,还有就是 P2P 下载,以及游戏中的边玩边下,来减少下载时长,降低用户主动取消率。
协议方面也做了优化,包括对终端硬件进行判断,还有一些跨网调度,分片下载,多线程下载技术。
-
其他增值服务
同时我们还做了增值服务,我们对异常用户的跟踪,包括我们对实时数据的分析,这个分析我们可以达到秒级,另外和运营商合作,针对腾讯游戏一些 VIP 用户和指定用户,进行下载提速。
另外我们提供智能限速的服务,因为我们的成本是按照峰值来计算的,我们会对峰值的时候对于部分用户启动智能限速以降低我们的带宽成本。
图中蓝色方框标注的这三个是在这些下载优化这块收益最大的三个解决方案,包括资源防劫持和域名防劫持。
3.1 域名防劫持优化方案-智营解析服务
针对我们域名劫持的情况,我们提供智营解析服务:
我们主要是通过自建一个
HttpDns
后台,给业务提供正确的ip解析服务。
HttpDns 是使用
HTTP
协议代替传统解析域名。使用 HTTP 协议向 HttpDns 服务器的80端口进行请求,代替传统的 DNS 协议向 DNS 服务器的53端口,绕开了 Local Dns,从而避免了使用 Local Dns 造成的劫持和跨网。
我们
HttpDns
后台服务使用的是 BGP IP,经过验证,BGP 有5%左右的访问失败率,所以我们多线路智能选路方案将劫持率(包括失败率)降低到0.01%。
目前,我们智营解析服务,已经为每天数千万用户提供每天近十亿的解析服务,劫持率有高峰期的1.5%下降到万分之一,解析耗时整体下降了50%,投诉大幅下降95%以上。
这页是我们智营解析和外面的一些域名解析方案的一个优势吧,第一个就是我们精准可靠,我们提供的后台目前覆盖了 TOP17 的运营商,覆盖了95%的用户。
另外我们做了IP三地容灾,实现智能缓存,这样降低了更多的网络开销,同时使用多路解析,从中选择最正确的IP给客户端,另外我们会精确识别IP,对IP进行一系列的测速进行纠正,将速度最好的IP返回给客户端。另外我们提供非常多的接口,我们也支持多线程调用,提供同步和异步接口。
我们的智能解析服务适用也非常广泛,包括纯 IPV6 网络和 IPV4 网络,也支持 H5,也支持
HTTPS
协议。
目前我们的数据提供20多个关键指标,包括解析量/劫持量/解决量/域名量/解析IP量/运营商统计/云服务商统计/解析耗时/缓存率等。我们还通过大数据计算对劫持的趋势进行预测。
其次我们提供一个整体的劫持趋势的一个分析,以及通过大数据进行劫持故障的发生概率预测。
最后我们还提供一个劫持原因分析,这些劫持原因主要包括解析为空/解析网关地址/解析到同网段地址(包括内网)/解析到错误地址/解析到旧地址/解析出非ip等。
以上是我们智营解析服务的优势,目前智营解析服务已经为所有的腾讯手游,以及部分腾讯云移动app合作伙伴提供服务,如有需要,可与腾讯云进行沟通使用这项服务。
3.2 资源防劫持优化方案-智营回源代理服务
接下来是我们资源防劫持的优化方案,资源劫持主要包括3种劫持:
-
文件劫持,也就是文件不能下载。
-
302劫持,某些运营商会对302跳转请求进行。
-
内容劫持,某些运营商会解析
HTTP
的内容,在其中加入广告。
针对资源劫持我们主要是提供一个回源代理的解决方案,当我们判断资源或者页面无法正确下载之后,有可能这个资源被运营商劫持了,我们会这个请求转到我们的IP回源代理服务器,我们代理服务器再去cdn节点进行资源的一个拉取。
如果其中发生了302跳转到另外的下载页面,我们的代理服务器直接进行302跳转,不把这个跳转请求发给客户端,避免运营商对302跳转的一个屏蔽。
另外,由于种种原因,可能业务无法使用 HTTPS 协议,那么我们的 sdk 和回源代理之间可以通过 HTTPS 协议加密交互,防止运营商在
HTTP