QQ升級程序分析

今天分析了一下騰訊QQ以及相關產品升級程序的工作機理,雖然客戶端升級實現方式有很多種,各家也各有所長,但是騰訊面對數億的客戶端,在龐大複雜的客戶端環境以及巨大的網絡帶寬壓力情況下能夠處理好升級功能模塊,應該說是比較強的。

 

升級程序基本工作流程是一致的,啓動時首先檢測自身是否有新版本,如果有新版本,則升級自身,如果自身不需要更新,則檢查其他功能模塊的更新信息並進行更新。升級系統實現的難點有兩處,一是上面提到的升級程序升級自身。二是面對千萬量級的客戶端,如何設計讓客戶端能夠及時有效的升級。

 

第一問題,有很多種做法,常見的是當升級程序檢測到需要升級自身時,啓動另一個程序來完成這件事情,這種做法的缺點是要附加一個程序模塊來負責升級程序的升級,這個模塊如果失效(刪除或被破壞),則升級升級程序無法應用。通過filemonprocess viewer監視分析,QQ升級模塊QQLiveUpdate作爲升級模塊,是採用自身升級自身的策略來完成自身升級的。當QQLiveUpdate進行升級時,首先其檢測QQLiveUpdate是否需要升級,如果需要升級,先通過網絡傳輸通道獲取到升級包,然後解壓升級包,解壓後啓動解壓目錄下的QQLiveUpdate,老版本QQLiveUpdate進程退出。解壓目錄下的QQLiveUpdate把自身複製到程序目錄,然後啓動程序目錄下的QQLiveUpdate,解壓目錄下的QQLiveUpdate退出。

 

對於第二個問題,騰訊QQ在客戶端並沒有做特殊處理,當用戶登錄成功之後,其會在後臺啓動升級進程,檢測是否有更新,如果有更新,通過HTTP方式從服務器進行下載,否則升級程序退出。當更新被下載下來後,用戶再次啓動QQ時,QQ會提示有新的升級補丁需要安裝。能夠支撐數千萬的同時在線用戶,我想其升級服務器應該是遍佈全國,有可能是通過CDN技術實現。

 

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