一秒鐘法則:來自騰訊無線研發(fā)的經(jīng)驗分享

0 評論 4716 瀏覽 10 收藏 16 分鐘

在2014年4月11日的騰訊分享日活動上, 來自騰訊MIG的移動互聯(lián)網(wǎng)事業(yè)群運營總監(jiān)/T4專家,負責運營QQ手機瀏覽器、騰訊PC瀏覽器、騰訊手機安全管家、騰訊電腦管家產(chǎn)品的劉昕介紹了移動無線產(chǎn)品研發(fā)中的“一秒鐘法則”。本文根據(jù)該演講內(nèi)容整理形成。

移動互聯(lián)網(wǎng)的一個很大問題在于無線網(wǎng)絡(luò)跟以前的有線網(wǎng)絡(luò)不一樣,無論是網(wǎng)絡(luò)的組織形態(tài)、架構(gòu)、通訊機制,跟有線網(wǎng)絡(luò)都有很大差異,這帶來很多挑戰(zhàn)。今天介紹的“一秒鐘法則”就是根據(jù)我們在移動互聯(lián)網(wǎng)研發(fā)、運營過程中總結(jié)出來的一條解決的原則。

手機接入服務(wù)器的流程

首先,手機要通過無線網(wǎng)絡(luò)協(xié)議,從基站獲得無線鏈路分配,才能跟網(wǎng)絡(luò)進行通訊。

無線網(wǎng)絡(luò)基站、基站控制器這方面,會給手機進行信號的分配,已完成手機連接和交互。

獲得無線鏈路后,會進行網(wǎng)絡(luò)附著、加密、鑒權(quán),核心網(wǎng)絡(luò)會檢查你是不是可以連接在這個網(wǎng)絡(luò)上,是否開通套餐,是不是漫游等。核心網(wǎng)絡(luò)有SGSN和GGSN,在這一步完成無線網(wǎng)絡(luò)協(xié)議和有線以太網(wǎng)的協(xié)議轉(zhuǎn)換。

再下一步,核心網(wǎng)絡(luò)會給你進行APN選擇、IP分配、啟動計費。

再往下面,才是傳統(tǒng)網(wǎng)絡(luò)的步驟:DNS查詢、響應(yīng),建立TCP鏈接,HTTP GET,RTTP RESPONSE 200 OK,HTTP RESPONSE DATA,LAST HTTP RESPONSE DATA,開始UI展現(xiàn)。

這是手機通過無線網(wǎng)絡(luò)接入服務(wù)器的全過程。整個過程當中有幾個困擾開發(fā)者的問題:
1.無線網(wǎng)絡(luò)是怎么給手機分配到無線鏈路的?

2.核心網(wǎng)絡(luò)有接入點(APN),這里的CMNET和CMWAP有什么區(qū)別,僅僅是協(xié)議不同嗎嗎?數(shù)據(jù)轉(zhuǎn)發(fā)又有什么區(qū)別?一個數(shù)據(jù) 包在不同網(wǎng)絡(luò)上傳輸有不同嗎?

3.用戶怎么最快的找到正確的服務(wù)器?內(nèi)容怎么快速有效的加載,在第一時間顯示出來?

這幾個問題的重點在于其中的幾個連接點:

1.無線鏈路分配。這是一個物理實連接。

2.IP層鏈接。這是一個邏輯虛連接。

3.TCP層鏈接。這是一個邏輯虛連接。

4.HTTP層鏈接。這是一個邏輯虛連接。

5.用戶在線。這是一個邏輯虛連接。

即使TCP連接建立,看到用戶在線,也必須在手機獲得無線鏈路分配的情況下,一個完整的通信才能真正完成,上行下行數(shù)據(jù)才能發(fā)送。這是移動互聯(lián)網(wǎng)非常重要的特性。在現(xiàn)實中,手機已經(jīng)分配ip也可能是沒有無線鏈路,為什么?無線網(wǎng)絡(luò)的資源是有限的,必須有效利用,這里由無線網(wǎng)絡(luò)的信令機制完成無線網(wǎng)絡(luò)資源的分配與釋放。

以用手機打電話的場景示例:用戶在手機上撥號出去后,手機會跟網(wǎng)絡(luò)申請無線鏈路,呼叫申請會發(fā)給電路域的核心網(wǎng),通過電話交換機找尋被叫電話,被叫方接通電話,無線鏈路建立;完成通話,掛斷的時候,手機給網(wǎng)絡(luò)發(fā)送指令,表示服務(wù)使用結(jié)束,把已經(jīng)分配的無線鏈路釋放。

上網(wǎng)的情況就比較復(fù)雜一些了。什么時候決定無線鏈路的分配?什么時候決定通訊完成?對于這兩個時間點,不同的網(wǎng)絡(luò)制式、不同的運營商都是不同的,不過大致上有幾個區(qū)間值:

在2G Edge網(wǎng)絡(luò)下,差不多是1秒鐘不傳數(shù)據(jù),就釋放物理連接,回收給其他人備用。3G網(wǎng)絡(luò)會延長幾秒鐘。

這樣的設(shè)定是有原因的。比如現(xiàn)在我們這個會場里有200人,那么我們200人同時上網(wǎng)的前提是共享同一個基站的資源,共享資源必須要有規(guī)則,比如要有排序,根據(jù)資源情況、用戶鏈接活躍決定分配還是回收,這都是通過無線網(wǎng)絡(luò)信令控制的。

給一個手機分配無線信道的信令又有好幾個情況,比如基站跟手機,基站跟基站控制器、核心網(wǎng)。舉個例子,服務(wù)器從后臺發(fā)送push消息,移動網(wǎng)絡(luò)可能不知道這個手機是否活躍,不知道在哪個小區(qū),移動網(wǎng)絡(luò)就會發(fā)一個尋呼,在各個小區(qū)找這個手機,當然這個不能基于IP,而是其他的網(wǎng)絡(luò)標識。找到了之后,這個手機再去申請信道資源,然后才能接受push。所以,這種場景下信令的消耗可能會在很多小區(qū)產(chǎn)生。

根據(jù)以上情況,就形成無線網(wǎng)絡(luò)的一大特點:秒級狀態(tài)管理,秒級狀態(tài)轉(zhuǎn)換。這兩個操作都在幾百ms到幾秒之間進行,對于維持連接來說時間太短,對于從無連接到有連接的轉(zhuǎn)換來說時間又太長。

相比之下,有線網(wǎng)絡(luò)的狀態(tài)管理如ip分配、tcp連接釋放,都是分鐘級,而狀態(tài)轉(zhuǎn)換則是毫秒級。

這些通訊機制,同時加上無線網(wǎng)絡(luò)的高延遲、高丟包。如何保證移動互聯(lián)網(wǎng)的產(chǎn)品提供穩(wěn)定的、可預(yù)期的服務(wù)質(zhì)量,成為非常大的挑戰(zhàn):

?2G網(wǎng)絡(luò)上無線部分數(shù)據(jù)傳輸?shù)难舆t有幾百ms,4G網(wǎng)絡(luò)上無線部分傳輸延遲減少到幾十ms,核心網(wǎng)狀態(tài)轉(zhuǎn)換、協(xié)議轉(zhuǎn)換30~100ms,IP骨干網(wǎng)上的延遲又跟物理距離以及運營商互聯(lián)互通質(zhì)量有關(guān),跨運營商50-400ms,同運營商5-80ms,這個還要取決于網(wǎng)絡(luò)擁塞的情況。

?無線網(wǎng)絡(luò)誤碼率比有線高兩個數(shù)量級,在不同時間段的波動也非常巨大。

怎么基于移動網(wǎng)絡(luò)的特性去優(yōu)化服務(wù)?這就是我們總結(jié)的一秒鐘法則:在一秒內(nèi)要完成的規(guī)定動作。

?2g網(wǎng)絡(luò):1秒內(nèi)完成dns查詢、和后臺服務(wù)器建立連接

?3g網(wǎng)絡(luò):1秒內(nèi)完成首字顯示(首字時間)

?wifi網(wǎng)絡(luò):1秒內(nèi)完成首屏顯示(首屏時間)

這些指標需要在終端度量,必須跟用戶體驗相關(guān):首字時間、首屏時間都必須是用戶可以直觀感受到的。

優(yōu)化思路

接入調(diào)度優(yōu)化

接入調(diào)度優(yōu)化首先要考慮的是減少DNS的影響。移動網(wǎng)絡(luò)的DNS有如下特點:

1.骨干網(wǎng)無法識別移動用戶在哪個城市,東西南北各個地方的調(diào)度沒有充分調(diào)用。目前有一部分全國范圍的DNS承載了超過40%的全網(wǎng)用戶

2.很多山寨機的終端local dns設(shè)置是錯誤的

另外還有一些有線網(wǎng)絡(luò)也一樣會遇到的問題,如終端DNS解析濫用、域名劫持、DNS污染、老化、脆弱等。不過對于這些問題,桌面的自愈性會比較好,而在手機上則比較難以解決。

對于DNS的問題,有兩條主要的解決思路:

1.減少DNS的請求、查詢、更新,也就是做DNS緩存

2.在終端配置server list,直接訪問IP,不用DNS

但僅僅這么做還不夠,因為用戶可能來自國內(nèi)外不同的運營商,還需要進一步優(yōu)化調(diào)度策略:

1.DNS緩存需要多建立接入點,用不同域名區(qū)分

2.IP列表需要更新以適應(yīng)不同網(wǎng)絡(luò)情況,要做到主動調(diào)度。好比最早我們只服務(wù)好移動用戶就行,保證移動用戶的接入質(zhì)量優(yōu)先,因為絕大多數(shù)用戶集中在移動;現(xiàn)在國內(nèi)有三個運營商,用戶分布的比例在慢慢接近,要區(qū)分清楚;智能手機會用wifi,接入的是電信、聯(lián)通還是哪個運營商,不知道,所以你不可能預(yù)先設(shè)置場景再if then,必須通過后臺調(diào)度能力來解決。

再進一步優(yōu)化,就產(chǎn)生一種融合的方式:

1.先做域名解析,客戶端直接連接解析的IP,可以用http協(xié)議,也可以用tcp socket

2.多端口、多協(xié)議組合:不同協(xié)議有不同的限制,有些只能http,有些只能tcp socket,各種環(huán)境都要適應(yīng),客戶端不能只支持一種協(xié)議

3.終端測速:接入點越來越多,接入哪個合適,要選擇,可以通過終端測速來選擇最快的。你當然可以每一次新建連接都做測速,但是這樣建立連接時間可能會很長;我們可以給用戶先建立連接后,在后臺根據(jù)長期速度監(jiān)控、當前測速的結(jié)果,來做動態(tài)調(diào)度。也就是說,第一次連接可能不是最優(yōu),連接建立后動態(tài)測速,再轉(zhuǎn)移到最快接入點。更進一步就是建立網(wǎng)絡(luò)profile,終端學習的思路。

測速采樣的粒度我也說一下,移動互聯(lián)網(wǎng)取IP段是沒用的,比較好的粒度是到網(wǎng)元級別,比如廣東有20多個wap網(wǎng)關(guān),每一個網(wǎng)關(guān)的情況都不一樣,這就是一個比較合適的粒度。

另外我們后面還有一個SET模型,可以就近提供服務(wù)。

最后想強調(diào)一個所有的接入調(diào)度原則:不要把調(diào)度邏輯寫死在客戶端,一定要由后臺完成。

協(xié)議優(yōu)化

協(xié)議參數(shù)優(yōu)化這塊就簡單列一下,是我們長期運營過程中總結(jié)的一些經(jīng)驗,在啟動移動互聯(lián)網(wǎng)服務(wù)時作為運營的規(guī)范,可以少走很多彎路:

?關(guān)閉TCP快速回收

?Init RTO不低于3秒

?初始擁塞控制窗口不小于10。因為大部分頁面在10kB以下,很多請求在慢啟動階段已經(jīng)結(jié)束,改為10可以降低小頁面資源傳輸時延。內(nèi)容越大,這個選項的效果就比較不明顯。

?Socket buffer > 64k

?TCP滑動窗口可變

?控制發(fā)包大小在1400字節(jié)以下,避免分片

協(xié)議優(yōu)化的原則總結(jié)下來是這么幾條:

?連接重用

?并發(fā)連接控制

?超時控制

?包頭精簡

?內(nèi)容壓縮

?選擇更高效率的協(xié)議。無論是TCP、HTTP、UDP、長連接、GZIP、SPDY、WUP還是WebP,每一種協(xié)議、方案都有其道理,沒有最優(yōu),只有是否適合你的產(chǎn)品和服務(wù)特點,需要大家在運營過程驗證和取舍。

WAP接入點優(yōu)化

關(guān)于WAP接入點優(yōu)化,可能有些人會說,我們的App是高端大氣上檔次的應(yīng)用,是不是就不用做WAP優(yōu)化?實際上我們的統(tǒng)計顯示,目前有5%-20%的用戶選擇的接入點是*WAP(CMWAP、3GWAP、CTWAP),這甚至包括一些iPhone終端。實際上,WAP網(wǎng)關(guān)本質(zhì)是個代理,不完全是落后的東西,隨著技術(shù)的進步也在演進,以后在組網(wǎng)架構(gòu)中可能有綜合網(wǎng)關(guān)、內(nèi)容計費網(wǎng)關(guān)來取代目前的WAP網(wǎng)關(guān),所以建議也要一并考慮。以下是做WAP優(yōu)化需要注意的一些問題:

?資費提醒頁面

?302跳轉(zhuǎn)處理

?X-Online-Host使用與處理

?包大小限制

?劫持與緩存

?正確獲取資源包大小

業(yè)務(wù)邏輯優(yōu)化

簡化邏輯:交互繁瑣的內(nèi)容盡量用標識更新。舉一個例子,我們在老版的手機QQ上做過一個測試:假如我有100個好友,用手機QQ完成登陸,完成好友列表更新一遍,需要3.5分鐘。這肯定是不合理的。建議用信令狀態(tài)來通知是否需要更新,同時合理利用緩存。在比如玩游戲,好友給你送了很多星星,是讓用戶一次一次點還是批量點?從優(yōu)化的角度肯定是批量點,從用戶體驗的角度這也更加舒服。

另一方面,延長域名圖標的緩存時間也可以有效地優(yōu)化訪問次數(shù)。我們把手機騰訊網(wǎng)圖標的緩存時長從120分鐘延長到2天后,訪問次數(shù)優(yōu)化了差不多35%。

柔性可用:這個意思就是在網(wǎng)絡(luò)質(zhì)量好的時候給高清大圖,不好的時候先給用戶看小圖,點一下再拉取原圖。舉一個極端的例子,比如萬一地震了,基站毀掉20%,用戶要給家人報平安,這時候產(chǎn)品上就必須優(yōu)化,比如只發(fā)送文字,合理降低網(wǎng)絡(luò)消耗。另外在響應(yīng)很慢的時候,需要給用戶一些合理的頁面提示,比如提示用戶再過5秒會發(fā)送,所以你不要一直刷屏,這也可以減少訪問對后臺服務(wù)、對網(wǎng)絡(luò)的沖擊。

其實騰訊公司的很多產(chǎn)品在業(yè)務(wù)邏輯優(yōu)化,更好的適應(yīng)移動互聯(lián)網(wǎng)場景上,有很多非常好的思路,今天由于時間關(guān)系就不再展開來。

最后談?wù)剬?yōu)化方法的實踐和結(jié)果的評估。QQ手機瀏覽器從4.5版本、5.0版本到5.1版本,我們對2G網(wǎng)絡(luò)下的連接時間、3G網(wǎng)絡(luò)下的首字耗時、wifi網(wǎng)絡(luò)下的首屏耗時進行持續(xù)監(jiān)控,耗時降到一秒鐘以下還在不斷的改進,每個新的版本平均值均有所壓縮。這個結(jié)果是從每天用戶實際使用的運營數(shù)據(jù)中得到的,覆蓋到絕大多數(shù)的手機終端和網(wǎng)絡(luò)環(huán)境。不過平均值只是一方面,我們另一方面還要看“有多少比例的數(shù)據(jù)滿足了一秒鐘法則”這個維度,因為無線網(wǎng)絡(luò)的長尾數(shù)據(jù)波動很大,這一個維度也非常重要。目前現(xiàn)狀是我們2G網(wǎng)絡(luò)做到79%,3G網(wǎng)絡(luò)做到73%,wifi網(wǎng)絡(luò)做到69%。目前我們的目標是達到80%,實現(xiàn)之后,再進一步挑戰(zhàn)90%的比例,不斷追求極致。

 

本文來自騰訊大講堂

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!