QQ升级程序分析

今天分析了一下腾讯 QQ 以及相关产品升级程序的工作机理,虽然客户端升级实现方式有很多种,各家也各有所长,但是腾讯面对数亿的客户端,在庞大复杂的客户端环境以及巨大的网络带宽压力情况下能够处理好升级功能模块,应该说是比较强的。
 
升级程序基本工作流程是一致的,启动时首先检测自身是否有新版本,如果有新版本,则升级自身,如果自身不需要更新,则检查其他功能模块的更新信息并进行更新。升级系统实现的难点有两处,一是上面提到的升级程序升级自身。二是面对千万量级的客户端,如何设计让客户端能够及时有效的升级。
 
第一问题,有很多种做法,常见的是当升级程序检测到需要升级自身时,启动另一个程序来完成这件事情,这种做法的缺点是要附加一个程序模块来负责升级程序的升级,这个模块如果失效(删除或被破坏),则升级升级程序无法应用。通过 filemon process viewer 监视分析, QQ 升级模块 QQLiveUpdate 作为升级模块,是采用自身升级自身的策略来完成自身升级的。当 QQLiveUpdate 进行升级时,首先其检测 QQLiveUpdate 是否需要升级,如果需要升级,先通过网络传输通道获取到升级包,然后解压升级包,解压后启动解压目录下的 QQLiveUpdate ,老版本 QQLiveUpdate 进程退出。解压目录下的 QQLiveUpdate 把自身复制到程序目录,然后启动程序目录下的 QQLiveUpdate ,解压目录下的 QQLiveUpdate 退出。
 
对于第二个问题,腾讯 QQ 在客户端并没有做特殊处理,当用户登录成功之后,其会在后台启动升级进程,检测是否有更新,如果有更新,通过 HTTP 方式从服务器进行下载,否则升级程序退出。当更新被下载下来后,用户再次启动 QQ 时, QQ 会提示有新的升级补丁需要安装。能够支撑数千万的同时在线用户,我想其升级服务器应该是遍布全国,有可能是通过 CDN 技术实现。
 

你可能感兴趣的:(并发,客户端,升级,CDN,千万)