腾讯手游基础技术分享张丹•浅谈手游的发展前景•手游网络环境•手游架构技术评估•手游SDK能力•手游运维能力目录国内移动游戏市场增长显著放缓,人口红利消耗殆尽数据来源:AppAnnie、GPC、IDC、CNG;腾讯内部整理020406080100120140160国内iOS平台移动游戏营收(2013.07~2014.08,百万美元)33%37%46%52%59%61%0.01.02.03.04.05.00%10%20%30%40%50%60%70%13Q113Q213Q313Q414Q114Q2国内移动游戏用户渗透率(13Q1-14Q2)移动互联网用户规模(亿人)移动游戏用户渗透率国内终端销量增长乏力,首次购机占比持续下降数据来源:百度;腾讯内部整理-10%-5%0%5%10%15%20%02040608010012012Q312Q413Q113Q213Q313Q414Q114Q2国内智能机出货量及增长率(12Q3-14Q2)出货量(百万台)增长率96%94%66%55%48%43%40%0%10%20%30%40%50%60%70%80%90%100%12Q312Q413Q113Q213Q313Q414Q1国内Android手机首次购机比例下降(12Q3-14Q1)首次购买Android机老Android用户换机中国日本北美韩国Top10游戏占比58%50%39%49%Top25游戏占比79%67%53%68%Top50游戏占比92%78%65%80%Top100游戏占比97%87%77%89%2014H1总体市场规模(百万美元)2,1222,8172,780735全球各主要地理区域移动游戏市场集中度(2014.01-2014.06)数据来源:AppAnnie、腾讯整理国内移动游戏行业精品贡献主要收入份额,产品类型持续细分0%10%20%30%40%50%60%70%80%90%100%2013.62013.92013.122014.32014.6Applestore中国区营收TOP20移动游戏类型分布结构(2013.06~2014.06)卡牌战争策略经营休闲益智RPG动作棋牌塔防音乐体育单机类:休闲类:卡牌类:动作类:单机类强联网轻度中重度社交化国内游戏越来越往强联网,中重度,社交化,高品质方向发展高品质•浅谈手游的发展前景•手游网络环境•手游架构技术评估•手游SDK能力•手游运维能力目录移动网络RTT延时分布单流最大带宽=TCP窗口/RTT(Round-TripTime,往返延时)最大带宽和RTT延时关系如下(WIN=64,MSS=1.5KByte):注:电信3G带宽最小,但客户体验超越移动3G,关键是延时较小。全国手游用户实际测试RTT延时结果:空中网和核心网部分和运营商合作探讨实时游戏的QoS保证在无线网络以及无线网关拥塞的情况下优先保证实时游戏的延时需求跨网访问质量差Internet网部分优化接入调度方式全局调度就近覆盖动态路由客户端源点传输节点原始路径优化路径数据客户端源点传输节点原始路径优化路径数据分运营商接入中国移动AS9808中国电信163AS4134中国移动中国联通中国电信其他中小运营商其他需注意的问题:移动网关时序错乱http协议被降级域名被劫持或缓存容灾调度在终端配置serverlist,直接访问IP国外用户接入点部署一、核心思想TCP加速的核心思想就是采用透明代理的方式,将TCP一端的连接终结,然后重新发起一个连接到TCP的另外一端。这样,两端的数据包都被缓存在两端的TCP加速器上,TCP加速器之间的数据发送由TCP加速器进行控制。主流的TCP加速技术主要包括双边TCP优化和单边TCP优化两种。双边TCP加速——应用局限在TCP连接的两端部署硬件设备或安装软件,TCP透明代理工作在TCP连接的两端,代理了两端的连接,两个代理之间通常通过UDP或其它自定义协议进行工作。在实际使用中,TCP协议的两端与软件或硬件设备在一个局域网内,两个透明代理设备之间是广域网链路,通常具有一定的丢包、延迟,会造成TCP性能下降,所以在这两个透明代理之间,通常将协议转换为UDP协议或其它自定义协议,这些协议本身可以完全按照自己的要求进行控制,达到提高TCP性能的效果;同时,双边TCP加速还可以引入压缩、缓存等技术进一步提高TCP性能。双边TCP优化比较适用于TCP连接的两端比较容易控制的场景,可以较容易的安装硬件设备或软件客户端。单边TCP加速——适用性广泛单边TCP加速意味着可以只在TCP的一端部署软件或设备,达到提升TCP性能的目标。单边TCP加速的一个基本要求就是经过透明代理出去的协议必须是TCP协议(包括5元组和TCP的各种状态)。单边TCP加速的透明代理,在WAN一侧运行的应该是一个与标准TCP兼容、同时性能提高的TCP。绝大多数的单边TCP加速,都是在通过改进TCP的拥塞控制算法来进行TCP加速,例如TCPVegas,CUBIC,FastTCP,Zeta-TCP等。与双边TCP相比,单边TCP优化的适应性更广且更灵活。例如只要在服务器端进行了TCP加速,所有访问此服务器的客户端都会受益,并且不需要客户端安装任何软件或部署硬件设备。这样,就更加适用于服务器的访问对象不固定的情况,例如某个服务器是广大的互联网用户来访问。但是,单边TCP加速无法直接实现压缩、缓存等功能,如果要实现这些功能,同样也需要双边部署。Internet网部分优化TCP协议来加速Delay-based的TCP加速技术Delay-based的TCP加速技术克服了Loss-based的主要缺陷,在原理上采用延迟的变化来判断拥塞程度并相应调整传输速度。这一机制更符合现代网络的特点,能够在发生拥塞网络节点的队列开始堆积时就及时下调传输速度,避免拥塞恶化,减少甚至避免丢包的发生。同时,Delay-based的TCP加速技术不将丢包当作拥塞,在非拥塞因素发生的丢包时可以保持较高的速率。因此,设计优良的Delay-basedTCP加速技术比Loss-basedTCP加速技术在传输速度上有了显著的提升。尽管如此,Delay-basedTCP加速技术在使用中逐渐暴露出以下主要缺陷:1.当TCP连接的路径上发生拥塞节点的队列很浅时,延迟并不提高,拥塞体现为阵发的丢包。Delay-based的TCP加速技术感应不到这种拥塞,会继续高速发送数据包,从而导致持续大量丢包,之后的丢包恢复期会很长,导致传输速率显著降低。2.当网络路径本身的延迟就变化很大时,Delay-based的TCP加速技术会将非拥塞因素导致的延迟增加误判为拥塞并转入拥塞处理,从而导致没有必要的压低传输速率。包括移动互联网在内的无线网络延迟变化就很频繁;一些网络设备(特别是安全设备)也可能不定时地引入额外的数据包处理延迟。FastTCP是一个典型的Delay-basedTCP加速。TCP加速技术的演进:三代技术Loss-based•基于丢包的拥塞判断及处理–以丢包来判断拥塞并调整传输速率Delay-based•基于延迟的拥塞判断及处理–以往返延迟(RoundTripTime,RTT)变化来判断拥塞并调整传输速率Learning-based•基于学习的拥塞判断及处理–通过对路径上传输历史的学习动态判断拥塞并调整传输速率Loss-based的TCP加速技术Loss-based的TCP加速技术沿袭了主流TCP以丢包来判断拥塞并调整传输速率的方式。其对传统TCP的改进主要是通过增大初始拥塞控制窗口(CongestionWindow,CNWD),同时在通过丢包判断出现拥塞后使用比传统TCP更激进的方式恢复CNWD,以期减少拥塞对速率的影响。尽管这些改进在很多情况下确实能够提升速率,但Loss-based的TCP加速技术在原理上具有以下两个严重问题:1.将丢包作为拥塞发生的信号很容易误判,导致传输速率下降,带宽得不到有效利用。现代很多网络会产生非拥塞因素的丢包,特别是对无线网络,如信号被干扰等因素导致的丢包并不意味有拥塞发生。2.现代网络设备通常队列比较深,当拥塞发生时队列变长,延迟显著提高,但丢包迟迟不会发生。Loss-based的TCP加速机制将继续高速传输直到队列完全充满,往往导致大量数据包丢失。这不但加重路径节点拥塞,而且需要花更长时间从大量丢包中恢复过来,经常会导致传输阻滞。Loss-basedTCP加速包括在最新Linux系统中的CubicTCP等。Learning-based的动态TCP加速技术不论是Loss-based还是Delay-based的TCP加速技术都采用静态算法:基于对互联网流量模型的假设前提采用固定的拥塞判断及恢复机制。但网络的发展趋势是流量特征越来越复杂并难以预测。因此,Loss-based和Delay-based的TCP加速技术常常只在其前提假设成立的特定网络场景下有效,并且随着传输的进行,网络路径特征发生变化,效果也会起伏不定,有时甚至出现反效果。so,新一代Learning-basedTCP加速技术采用网络路径特征自学习的动态算法,基于每一个TCP连接实时观察、分析网络特征,根据学习到的网络特征随时调整算法来更准确的判断拥塞程度、更及时地判断丢包,从而更恰当的进行拥塞处理并更快速的进行丢包恢复。这一设计从原理上克服了静态算法无法适应网络路径特征变化的问题,保证了在各种不同网络环境及频繁变化的网络延迟、丢包特征下加速效果的持续有效性。•浅谈手游的发展前景•手游网络环境•手游架构技术评估•手游SDK能力•手游运维能力目录手游架构技术设计注意点服务端客户端安全运营1.性能基线达标2.架构设计合理3.存储与容灾4.弱网络处理1.性能基线达标2.流量、内存、CPU消耗3.帧率基线达标4.Crash率控制1.基础组件选型2.高可用方案3.弹性动态扩展4.可运营规范1.数据加密、协议保护2.游戏逻辑安全3.安全SDK接入4.安全日志开发服务端性能基线•事务成功率99.9%•事务响应时1秒•稳定性运行10小时上,各事务成功率99.9%客户端性能基线•最低硬件配置要求•Android平台:HTCG7(CPU:单核1GHZ,RAM:576M)•iOS平台:iPhone4/iPodTouch5/iPad2•CPU均值不大于80%•用户crash率必须低于6%,次数crash率必须低于5%容灾雪崩方案•限制频繁登录,防止出现雪崩•系统繁忙(过载)时的友好提示•单个系统过载导致所有玩家无法体验核心玩法负载均衡与扩容•GameSvr应该设计为无状态服务,支持动态扩容•DB设计要支持分片和动态配置分布部署•支持TGW前端接入客户端流量消耗•对于分局的游戏场景,单局消耗流量不超过200KB•对于不分局游戏场景,10分钟消耗流量不超过500KB客户端帧率基线•低配机型:游戏核心玩法中,最小FPS应不小于18帧/秒•中配机型:游戏核心玩法中,最小FPS应不小于25帧/秒弱网络处理•游戏中不能出现收支不等、客户端卡死/崩溃等异常情况•游戏核心功能不能有导致游戏无法正常进行的UI、交互问题•不能有损害玩家利益或可被玩家额外获利的问题•需要对延时的情况有相应的提示安全反外挂•无法通过内存修改、变速、修改系统时间获益或降低游戏难度•安装包不存在可能泄密的明文信息或帮助分析作弊方法的信息•进行代码混淆,加壳保护或服务器对安装包进行签名校验•发布报在log文件或控制台log中无输出敏感信息•重发和修改协议不能获得额外收益或对游戏造成攻击和负面影响•核心游戏逻辑的用户行为与核心数据在服务器校验正确•有防止作弊的发现机制和处理机制可运营规范•程序必须实现动态重载相关的配置文件,而无需中断服务•游戏热点类(例如用户信息等)数据访问必须使用cache层•服务进程间具有自动重连机制•程序用到的系统参数不能hardcode到代码中•游戏架构必须具有良好的可扩展性,支持运营策略调整客户端内存消耗•PSS—内存消耗指标•Android平台内存1G以下机型:最高PSS=96MB•Android