QQ升级程序分析

今天分析了一下腾讯QQ以及相关产品升级程序的工作机理,虽然客户端升级实现方式有很多种,各家也各有所长,但是腾讯面对数亿的客户端,在庞大复杂的客户端环境以及巨大的网络带宽压力情况下能够处理好升级功能模块,应该说是比较强的。

 

升级程序基本工作流程是一致的,启动时首先检测自身是否有新版本,如果有新版本,则升级自身,如果自身不需要更新,则检查其他功能模块的更新信息并进行更新。升级系统实现的难点有两处,一是上面提到的升级程序升级自身。二是面对千万量级的客户端,如何设计让客户端能够及时有效的升级。

 

第一问题,有很多种做法,常见的是当升级程序检测到需要升级自身时,启动另一个程序来完成这件事情,这种做法的缺点是要附加一个程序模块来负责升级程序的升级,这个模块如果失效(删除或被破坏),则升级升级程序无法应用。通过filemonprocess viewer监视分析,QQ升级模块QQLiveUpdate作为升级模块,是采用自身升级自身的策略来完成自身升级的。当QQLiveUpdate进行升级时,首先其检测QQLiveUpdate是否需要升级,如果需要升级,先通过网络传输通道获取到升级包,然后解压升级包,解压后启动解压目录下的QQLiveUpdate,老版本QQLiveUpdate进程退出。解压目录下的QQLiveUpdate把自身复制到程序目录,然后启动程序目录下的QQLiveUpdate,解压目录下的QQLiveUpdate退出。

 

对于第二个问题,腾讯QQ在客户端并没有做特殊处理,当用户登录成功之后,其会在后台启动升级进程,检测是否有更新,如果有更新,通过HTTP方式从服务器进行下载,否则升级程序退出。当更新被下载下来后,用户再次启动QQ时,QQ会提示有新的升级补丁需要安装。能够支撑数千万的同时在线用户,我想其升级服务器应该是遍布全国,有可能是通过CDN技术实现。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章