騰訊無線研發(fā)經(jīng)驗(yàn):一秒鐘法則
當(dāng)前位置:點(diǎn)晴教程→閑情逸致
→『 微信好文 』
[ 核心提示 ] 移動(dòng)互聯(lián)網(wǎng)的組織形態(tài)、架構(gòu)、通訊機(jī)制等等與有線網(wǎng)絡(luò)都有著巨大的差異,騰訊在處理這種差異的時(shí)候都有哪些經(jīng)驗(yàn)?zāi)兀?br> 編者注:本文轉(zhuǎn)自騰訊大講堂。在 2014 年 4 月 11 日的騰訊分享日活動(dòng)上,來自騰訊 MIG 的移動(dòng)互聯(lián)網(wǎng)事業(yè)群運(yùn)營(yíng)總監(jiān) /T4 專家,負(fù)責(zé)運(yùn)營(yíng) QQ 手機(jī)瀏覽器、騰訊 PC 瀏覽器、騰訊手機(jī)安全管家、騰訊電腦管家產(chǎn)品的劉昕介紹了移動(dòng)無線產(chǎn)品研發(fā)中的 " 一秒鐘法則 "。
移動(dòng)互聯(lián)網(wǎng)的一個(gè)很大問題在于無線網(wǎng)絡(luò)跟以前的有線網(wǎng)絡(luò)不一樣,無論是網(wǎng)絡(luò)的組織形態(tài)、架構(gòu)、通訊機(jī)制,跟有線網(wǎng)絡(luò)都有很大差異,這帶來很多挑戰(zhàn)。今天介紹的 " 一秒鐘法則 " 就是根據(jù)我們?cè)谝苿?dòng)互聯(lián)網(wǎng)研發(fā)、運(yùn)營(yíng)過程中總結(jié)出來的一條解決的原則。 手機(jī)接入服務(wù)器的流程 首先,手機(jī)要通過無線網(wǎng)絡(luò)協(xié)議,從基站獲得無線鏈路分配,才能跟網(wǎng)絡(luò)進(jìn)行通訊。無線網(wǎng)絡(luò)基站、基站控制器這方面,會(huì)給手機(jī)進(jìn)行信號(hào)的分配,已完成手機(jī)連接和交互。 獲得無線鏈路后,會(huì)進(jìn)行網(wǎng)絡(luò)附著、加密、鑒權(quán),核心網(wǎng)絡(luò)會(huì)檢查你是不是可以連接在這個(gè)網(wǎng)絡(luò)上,是否開通套餐,是不是漫游等。核心網(wǎng)絡(luò)有 SGSN 和 GGSN,在這一步完成無線網(wǎng)絡(luò)協(xié)議和有線以太網(wǎng)的協(xié)議轉(zhuǎn)換。 再下一步,核心網(wǎng)絡(luò)會(huì)給你進(jìn)行 APN 選擇、IP 分配、啟動(dòng)計(jì)費(fèi)。 再往下面,才是傳統(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)。 這是手機(jī)通過無線網(wǎng)絡(luò)接入服務(wù)器的全過程。整個(gè)過程當(dāng)中有幾個(gè)困擾開發(fā)者的問題: 無線網(wǎng)絡(luò)是怎么給手機(jī)分配到無線鏈路的? 核心網(wǎng)絡(luò)有接入點(diǎn)(APN),這里的 CMNET 和 CMWAP 有什么區(qū)別,僅僅是協(xié)議不同嗎嗎?數(shù)據(jù)轉(zhuǎn)發(fā)又有什么區(qū)別?一個(gè)數(shù)據(jù)包在不同網(wǎng)絡(luò)上傳輸有不同嗎? 用戶怎么最快的找到正確的服務(wù)器??jī)?nèi)容怎么快速有效的加載,在第一時(shí)間顯示出來? 這幾個(gè)問題的重點(diǎn)在于其中的幾個(gè)連接點(diǎn): 無線鏈路分配(物理實(shí)連接); IP 層鏈接(邏輯虛連接); TCP 層鏈接(邏輯虛連接); HTTP 層鏈接(邏輯虛連接); 用戶在線(邏輯虛連接)。 即使 TCP 連接建立,看到用戶在線,也必須在手機(jī)獲得無線鏈路分配的情況下,一個(gè)完整的通信才能真正完成,上行下行數(shù)據(jù)才能發(fā)送。這是移動(dòng)互聯(lián)網(wǎng)非常重要的特性。在現(xiàn)實(shí)中,手機(jī)已經(jīng)分配 IP 也可能是沒有無線鏈路,為什么?無線網(wǎng)絡(luò)的資源是有限的,必須有效利用,這里由無線網(wǎng)絡(luò)的信令機(jī)制完成無線網(wǎng)絡(luò)資源的分配與釋放。 以用手機(jī)打電話的場(chǎng)景示例:用戶在手機(jī)上撥號(hào)出去后,手機(jī)會(huì)跟網(wǎng)絡(luò)申請(qǐng)無線鏈路,呼叫申請(qǐng)會(huì)發(fā)給電路域的核心網(wǎng),通過電話交換機(jī)找尋被叫電話,被叫方接通電話,無線鏈路建立;完成通話,掛斷的時(shí)候,手機(jī)給網(wǎng)絡(luò)發(fā)送指令,表示服務(wù)使用結(jié)束,把已經(jīng)分配的無線鏈路釋放。 上網(wǎng)的情況就比較復(fù)雜一些了。什么時(shí)候決定無線鏈路的分配?什么時(shí)候決定通訊完成?對(duì)于這兩個(gè)時(shí)間點(diǎn),不同的網(wǎng)絡(luò)制式、不同的運(yùn)營(yíng)商都是不同的,不過大致上有幾個(gè)區(qū)間值: 在 2G Edge 網(wǎng)絡(luò)下,差不多是 1 秒鐘不傳數(shù)據(jù),就釋放物理連接,回收給其他人備用。3G 網(wǎng)絡(luò)會(huì)延長(zhǎng)幾秒鐘。 這樣的設(shè)定是有原因的。比如現(xiàn)在我們這個(gè)會(huì)場(chǎng)里有 200 人,那么我們 200 人同時(shí)上網(wǎng)的前提是共享同一個(gè)基站的資源,共享資源必須要有規(guī)則,比如要有排序,根據(jù)資源情況、用戶鏈接活躍決定分配還是回收,這都是通過無線網(wǎng)絡(luò)信令控制的。 給一個(gè)手機(jī)分配無線信道的信令又有好幾個(gè)情況,比如基站跟手機(jī),基站跟基站控制器、核心網(wǎng)。舉個(gè)例子,服務(wù)器從后臺(tái)發(fā)送 push 消息,移動(dòng)網(wǎng)絡(luò)可能不知道這個(gè)手機(jī)是否活躍,不知道在哪個(gè)小區(qū),移動(dòng)網(wǎng)絡(luò)就會(huì)發(fā)一個(gè)尋呼,在各個(gè)小區(qū)找這個(gè)手機(jī),當(dāng)然這個(gè)不能基于 IP,而是其他的網(wǎng)絡(luò)標(biāo)識(shí)。找到了之后,這個(gè)手機(jī)再去申請(qǐng)信道資源,然后才能接受 push。所以,這種場(chǎng)景下信令的消耗可能會(huì)在很多小區(qū)產(chǎn)生。 根據(jù)以上情況,就形成無線網(wǎng)絡(luò)的一大特點(diǎn):秒級(jí)狀態(tài)管理,秒級(jí)狀態(tài)轉(zhuǎn)換。這兩個(gè)操作都在幾百毫秒到幾秒之間進(jìn)行,對(duì)于維持連接來說時(shí)間太短,對(duì)于從無連接到有連接的轉(zhuǎn)換來說時(shí)間又太長(zhǎng)。 相比之下,有線網(wǎng)絡(luò)的狀態(tài)管理如 IP 分配、TCP 連接釋放,都是分鐘級(jí),而狀態(tài)轉(zhuǎn)換則是毫秒級(jí)。 這些通訊機(jī)制,同時(shí)加上無線網(wǎng)絡(luò)的高延遲、高丟包。如何保證移動(dòng)互聯(lián)網(wǎng)的產(chǎn)品提供穩(wěn)定的、可預(yù)期的服務(wù)質(zhì)量,成為非常大的挑戰(zhàn): ??2G 網(wǎng)絡(luò)上無線部分?jǐn)?shù)據(jù)傳輸?shù)难舆t有幾百 ms,4G 網(wǎng)絡(luò)上無線部分傳輸延遲減少到幾十 ms,核心網(wǎng)狀態(tài)轉(zhuǎn)換、協(xié)議轉(zhuǎn)換 30~100ms,IP 骨干網(wǎng)上的延遲又跟物理距離以及運(yùn)營(yíng)商互聯(lián)互通質(zhì)量有關(guān),跨運(yùn)營(yíng)商 50-400ms,同運(yùn)營(yíng)商 5-80ms,這個(gè)還要取決于網(wǎng)絡(luò)擁塞的情況。 ?? 無線網(wǎng)絡(luò)誤碼率比有線高兩個(gè)數(shù)量級(jí),在不同時(shí)間段的波動(dòng)也非常巨大。 怎么基于移動(dòng)網(wǎng)絡(luò)的特性去優(yōu)化服務(wù)?這就是我們總結(jié)的一秒鐘法則:在一秒內(nèi)要完成的規(guī)定動(dòng)作。 2G 網(wǎng)絡(luò):1 秒內(nèi)完成 DNS 查詢、和后臺(tái)服務(wù)器建立連接; 3G 網(wǎng)絡(luò):1 秒內(nèi)完成首字顯示(首字時(shí)間); WiFi 網(wǎng)絡(luò):1 秒內(nèi)完成首屏顯示(首屏?xí)r間)。 這些指標(biāo)需要在終端度量,必須跟用戶體驗(yàn)相關(guān):首字時(shí)間、首屏?xí)r間都必須是用戶可以直觀感受到的。 優(yōu)化思路 接入調(diào)度優(yōu)化 接入調(diào)度優(yōu)化首先要考慮的是減少 DNS 的影響。移動(dòng)網(wǎng)絡(luò)的 DNS 有如下特點(diǎn): 骨干網(wǎng)無法識(shí)別移動(dòng)用戶在哪個(gè)城市,東西南北各個(gè)地方的調(diào)度沒有充分調(diào)用,目前有一部分全國(guó)范圍的 DNS 承載了超過 40% 的全網(wǎng)用戶; 很多山寨機(jī)的終端 Local DNS 設(shè)置是錯(cuò)誤的。 另外還有一些有線網(wǎng)絡(luò)也一樣會(huì)遇到的問題,如終端 DNS 解析濫用、域名劫持、DNS 污染、老化、脆弱等。不過對(duì)于這些問題,桌面的自愈性會(huì)比較好,而在手機(jī)上則比較難以解決。 對(duì)于 DNS 的問題,有兩條主要的解決思路: 減少 DNS 的請(qǐng)求、查詢、更新,也就是做 DNS 緩存; 在終端配置 server list,直接訪問 IP,不用 DNS。 但僅僅這么做還不夠,因?yàn)橛脩艨赡軄碜試?guó)內(nèi)外不同的運(yùn)營(yíng)商,還需要進(jìn)一步優(yōu)化調(diào)度策略: DNS 緩存需要多建立接入點(diǎn),用不同域名區(qū)分; IP 列表需要更新以適應(yīng)不同網(wǎng)絡(luò)情況,要做到主動(dòng)調(diào)度。好比最早我們只服務(wù)好移動(dòng)用戶就行,保證移動(dòng)用戶的接入質(zhì)量?jī)?yōu)先,因?yàn)榻^大多數(shù)用戶集中在移動(dòng);現(xiàn)在國(guó)內(nèi)有三個(gè)運(yùn)營(yíng)商,用戶分布的比例在慢慢接近,要區(qū)分清楚;智能手機(jī)會(huì)用 WiFi,接入的是電信、聯(lián)通還是哪個(gè)運(yùn)營(yíng)商,不知道,所以你不可能預(yù)先設(shè)置場(chǎng)景再 if then,必須通過后臺(tái)調(diào)度能力來解決。 再進(jìn)一步優(yōu)化,就產(chǎn)生一種融合的方式: 先做域名解析,客戶端直接連接解析的 IP,可以用 http 協(xié)議,也可以用 tcp socket; 多端口、多協(xié)議組合:不同協(xié)議有不同的限制,有些只能 http,有些只能 tcp socket,各種環(huán)境都要適應(yīng),客戶端不能只支持一種協(xié)議; 終端測(cè)速:接入點(diǎn)越來越多,接入哪個(gè)合適,要選擇,可以通過終端測(cè)速來選擇最快的。你當(dāng)然可以每一次新建連接都做測(cè)速,但是這樣建立連接時(shí)間可能會(huì)很長(zhǎng);我們可以給用戶先建立連接后,在后臺(tái)根據(jù)長(zhǎng)期速度監(jiān)控、當(dāng)前測(cè)速的結(jié)果,來做動(dòng)態(tài)調(diào)度。也就是說,第一次連接可能不是最優(yōu),連接建立后動(dòng)態(tài)測(cè)速,再轉(zhuǎn)移到最快接入點(diǎn)。更進(jìn)一步就是建立網(wǎng)絡(luò) profile,終端學(xué)習(xí)的思路。 測(cè)速采樣的粒度我也說一下,移動(dòng)互聯(lián)網(wǎng)取 IP 段是沒用的,比較好的粒度是到網(wǎng)元級(jí)別,比如廣東有 20 多個(gè) wap 網(wǎng)關(guān),每一個(gè)網(wǎng)關(guān)的情況都不一樣,這就是一個(gè)比較合適的粒度。 另外我們后面還有一個(gè) SET 模型,可以就近提供服務(wù)。 最后想強(qiáng)調(diào)一個(gè)所有的接入調(diào)度原則:不要把調(diào)度邏輯寫死在客戶端,一定要由后臺(tái)完成。 協(xié)議優(yōu)化 協(xié)議參數(shù)優(yōu)化這塊就簡(jiǎn)單列一下,是我們長(zhǎng)期運(yùn)營(yíng)過程中總結(jié)的一些經(jīng)驗(yàn),在啟動(dòng)移動(dòng)互聯(lián)網(wǎng)服務(wù)時(shí)作為運(yùn)營(yíng)的規(guī)范,可以少走很多彎路: 關(guān)閉 TCP 快速回收; Init RTO 不低于 3 秒; 初始擁塞控制窗口不小于 10。因?yàn)榇蟛糠猪撁嬖?nbsp;10kB 以下,很多請(qǐng)求在慢啟動(dòng)階段已經(jīng)結(jié)束,改為 10 可以降低小頁面資源傳輸時(shí)延。內(nèi)容越大,這個(gè)選項(xiàng)的效果就比較不明顯; Socket buffer > 64k; TCP 滑動(dòng)窗口可變; 控制發(fā)包大小在 1400 字節(jié)以下,避免分片。 協(xié)議優(yōu)化的原則總結(jié)下來是這么幾條: 連接重用; 并發(fā)連接控制; 超時(shí)控制; 包頭精簡(jiǎn); 內(nèi)容壓縮; 選擇更高效率的協(xié)議。無論是 TCP、HTTP、UDP、長(zhǎng)連接、GZIP、SPDY、WUP 還是 WebP,每一種協(xié)議、方案都有其道理,沒有最優(yōu),只有是否適合你的產(chǎn)品和服務(wù)特點(diǎn),需要大家在運(yùn)營(yíng)過程驗(yàn)證和取舍。 WAP 接入點(diǎn)優(yōu)化 關(guān)于 WAP 接入點(diǎn)優(yōu)化,可能有些人會(huì)說,我們的 App 是高端大氣上檔次的應(yīng)用,是不是就不用做 WAP 優(yōu)化?實(shí)際上我們的統(tǒng)計(jì)顯示,目前有 5%-20% 的用戶選擇的接入點(diǎn)是*WAP(CMWAP、3GWAP、CTWAP),這甚至包括一些 iPhone 終端。實(shí)際上,WAP 網(wǎng)關(guān)本質(zhì)是個(gè)代理,不完全是落后的東西,隨著技術(shù)的進(jìn)步也在演進(jìn),以后在組網(wǎng)架構(gòu)中可能有綜合網(wǎng)關(guān)、內(nèi)容計(jì)費(fèi)網(wǎng)關(guān)來取代目前的 WAP 網(wǎng)關(guān),所以建議也要一并考慮。以下是做 WAP 優(yōu)化需要注意的一些問題: 資費(fèi)提醒頁面; 302 跳轉(zhuǎn)處理; X-Online-Host 使用與處理; 包大小限制; 劫持與緩存; 正確獲取資源包大小。 業(yè)務(wù)邏輯優(yōu)化 簡(jiǎn)化邏輯:交互繁瑣的內(nèi)容盡量用標(biāo)識(shí)更新。舉一個(gè)例子,我們?cè)诶习娴氖謾C(jī) QQ 上做過一個(gè)測(cè)試:假如我有 100 個(gè)好友,用手機(jī) QQ 完成登陸,完成好友列表更新一遍,需要 3.5 分鐘。這肯定是不合理的。建議用信令狀態(tài)來通知是否需要更新,同時(shí)合理利用緩存。在比如玩游戲,好友給你送了很多星星,是讓用戶一次一次點(diǎn)還是批量點(diǎn)?從優(yōu)化的角度肯定是批量點(diǎn),從用戶體驗(yàn)的角度這也更加舒服。 另一方面,延長(zhǎng)域名圖標(biāo)的緩存時(shí)間也可以有效地優(yōu)化訪問次數(shù)。我們把手機(jī)騰訊網(wǎng)圖標(biāo)的緩存時(shí)長(zhǎng)從 120 分鐘延長(zhǎng)到 2 天后,訪問次數(shù)優(yōu)化了差不多 35%。 柔性可用:這個(gè)意思就是在網(wǎng)絡(luò)質(zhì)量好的時(shí)候給高清大圖,不好的時(shí)候先給用戶看小圖,點(diǎn)一下再拉取原圖。舉一個(gè)極端的例子,比如萬一地震了,基站毀掉 20%,用戶要給家人報(bào)平安,這時(shí)候產(chǎn)品上就必須優(yōu)化,比如只發(fā)送文字,合理降低網(wǎng)絡(luò)消耗。另外在響應(yīng)很慢的時(shí)候,需要給用戶一些合理的頁面提示,比如提示用戶再過 5 秒會(huì)發(fā)送,所以你不要一直刷屏,這也可以減少訪問對(duì)后臺(tái)服務(wù)、對(duì)網(wǎng)絡(luò)的沖擊。 最后談?wù)剬?duì)優(yōu)化方法的實(shí)踐和結(jié)果的評(píng)估。QQ 手機(jī)瀏覽器從 4.5 版本、5.0 版本到 5.1 版本,我們對(duì) 2G 網(wǎng)絡(luò)下的連接時(shí)間、3G 網(wǎng)絡(luò)下的首字耗時(shí)、wifi 網(wǎng)絡(luò)下的首屏耗時(shí)進(jìn)行持續(xù)監(jiān)控,耗時(shí)降到一秒鐘以下還在不斷的改進(jìn),每個(gè)新的版本平均值均有所壓縮。這個(gè)結(jié)果是從每天用戶實(shí)際使用的運(yùn)營(yíng)數(shù)據(jù)中得到的,覆蓋到絕大多數(shù)的手機(jī)終端和網(wǎng)絡(luò)環(huán)境。 不過平均值只是一方面,我們另一方面還要看 " 有多少比例的數(shù)據(jù)滿足了一秒鐘法則 " 這個(gè)維度,因?yàn)闊o線網(wǎng)絡(luò)的長(zhǎng)尾數(shù)據(jù)波動(dòng)很大,這一個(gè)維度也非常重要。目前現(xiàn)狀是我們 2G 網(wǎng)絡(luò)做到 79%,3G 網(wǎng)絡(luò)做到 73%,WiFi 網(wǎng)絡(luò)做到 69%。目前我們的目標(biāo)是達(dá)到 80%,實(shí)現(xiàn)之后,再進(jìn)一步挑戰(zhàn) 90% 的比例,不斷追求極致。 原文地址:http://iphone.myzaker.com/l.php?l=534ce4f31bc8e0d87d8b4568 該文章在 2014/4/15 18:31:56 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |