网络应用优化——时延与带宽
用戶體驗(yàn)?zāi)芙o網(wǎng)站帶來(lái)更多的收益,因此人們也投入了更多精力去研究它。用戶體驗(yàn)中,除了好的交互,精美的界面,用戶感知的“速度”也是重要的一環(huán)。從網(wǎng)絡(luò)角度來(lái)說(shuō),時(shí)延(latency)和帶寬(bindwidth)是決定“速度”的重要環(huán)節(jié)。
不同的應(yīng)用對(duì)時(shí)延和帶寬需求的側(cè)重點(diǎn)往往不同:
網(wǎng)絡(luò)游戲需要更低的時(shí)延。在一些對(duì)抗激烈的FPS、MOBA類的游戲中,單次數(shù)據(jù)傳輸?shù)牧坎⒉淮?#xff0c;因此帶寬要求不高。但是若你頂著延遲和別人進(jìn)行對(duì)抗,那么這局比賽可能已經(jīng)輸了一半;
流媒體需要更高的帶寬。高速帶寬能讓你觀看高清電影,而延時(shí)就顯得不那么重要,帶來(lái)問(wèn)題無(wú)非是在加載前等待一段時(shí)間罷了;
視頻聊天需要更低的時(shí)延。更低的時(shí)延意味著你能看到更流暢的實(shí)時(shí)畫面,而不會(huì)掉幀。也許只有當(dāng)你想要切換更高清晰度的時(shí)候才需要選擇更高的帶寬。
瀏覽網(wǎng)頁(yè)需要更低的時(shí)延。因?yàn)闆](méi)人愿意在一個(gè)空白頁(yè)面上花上幾秒鐘。更高的帶寬常常無(wú)關(guān)緊要,除非你需要流量高分辨率的圖片或者高清的視頻。
2.1.糖果包裝問(wèn)題
某廠某天生產(chǎn)了N顆糖果,需要進(jìn)行包裝和驗(yàn)收。流水線一端的工人A負(fù)責(zé)包裝,包裝速度為N1顆/小時(shí),另一端B的驗(yàn)收速度為N2顆/小時(shí),兩者通過(guò)協(xié)調(diào)達(dá)成某一相同的速度MIN(N1,N2)顆/小時(shí)。通過(guò)傳送帶傳送到目的地。傳送帶長(zhǎng)L米,速度為V 米/小時(shí)。從A開始計(jì)時(shí)到B驗(yàn)收完成,所需時(shí)間T為多少?
答:T = L / V + N / MIN(N1,N2) + 1 / MIN(N1,N2)
時(shí)間T反映了完成糖果包裝并驗(yàn)收完成的總時(shí)間。如果糖果想象成可以需要傳輸?shù)奈募?#xff0c;那么就可以把糖果包裝問(wèn)題轉(zhuǎn)換為一個(gè)簡(jiǎn)化的網(wǎng)絡(luò)傳輸問(wèn)題。
假設(shè)服務(wù)器A向用戶B發(fā)送一個(gè)大小為100KB的圖片(假設(shè)HTTP連接已經(jīng)建立),服務(wù)器上行帶寬為1Mbps,用戶所在下行帶寬為100Mbps。已知端對(duì)端物理距離為2000 km,光信號(hào)在光纖中的傳播速度是200000 km/s,求圖片從A發(fā)出到B完整接收的時(shí)間T。代入公式可得: T = 2000/200 + 100 * 8 / 1 = 810 ms(最后一項(xiàng)太小可以被忽略)
這個(gè)時(shí)間就是時(shí)延,具體的說(shuō)是單向時(shí)延,即一個(gè)數(shù)據(jù)文件從傳輸?shù)酵暾邮账ㄙM(fèi)的時(shí)間。
2.2.時(shí)延是什么
2.1中圖片傳輸?shù)臅r(shí)間叫做時(shí)延。時(shí)延并沒(méi)有一個(gè)確切的定義。多數(shù)情況下是指單向時(shí)延,就是在數(shù)據(jù)通信過(guò)程中從A發(fā)送數(shù)據(jù)的第一個(gè)比特開始到B接受到數(shù)據(jù)的最后一個(gè)比特為結(jié)束產(chǎn)生的時(shí)間消耗,在某些場(chǎng)景下也指雙向時(shí)延,即從網(wǎng)絡(luò)請(qǐng)求發(fā)出到收到完整響應(yīng)為結(jié)束經(jīng)歷的時(shí)間。時(shí)延常以毫秒為單位來(lái)衡量。數(shù)據(jù)包的大小、鏈路上傳下行速率、通信距離、通信介質(zhì)的種類、路由器的處理能力都會(huì)影響時(shí)延。常說(shuō)的時(shí)延是下列這些不同時(shí)延的總和:
傳播時(shí)延。信號(hào)在信道中傳輸?shù)臅r(shí)間=通信距離/傳播速度。
處理時(shí)延。路由器路由、差錯(cuò)控制以及數(shù)據(jù)包頭信息處理的時(shí)間。
隊(duì)列時(shí)延。數(shù)據(jù)包在隊(duì)列中等待路由器處理的時(shí)間。
發(fā)送時(shí)延。將數(shù)據(jù)包發(fā)送到信道中的時(shí)間=數(shù)據(jù)包大小/信道帶寬。
減少時(shí)延往往比增加帶寬需要更多的成本。2015年9月,Hibernia網(wǎng)絡(luò)公司為了最大程度上確保紐約和倫敦的通信延時(shí),部署了一條名為“Hibernia Express”的海底光纜,總計(jì)耗費(fèi)達(dá)3億美元。采用新光纜之后,紐約倫敦兩地的延時(shí)為58.95ms,比現(xiàn)存的所有大西洋光纜少了5ms。這意味著節(jié)約的每1毫秒,價(jià)值近6千萬(wàn)美元。
2.3.帶寬是什么
帶寬是指數(shù)據(jù)通信最大的吞吐量,根據(jù)傳輸方向的不同可以分為上行帶寬和下行帶寬,常用Mbps來(lái)進(jìn)行衡量。對(duì)于互聯(lián)網(wǎng)上的用戶,運(yùn)營(yíng)商(ISP)提供的帶寬就是數(shù)據(jù)通信的最大吞吐量,并且上下行帶寬往往不對(duì)稱。如中國(guó)電信百兆寬帶最大下行速度為100Mbps,而最大上行速度只有20Mbps。
一般來(lái)說(shuō),核心網(wǎng)絡(luò)(如海底光纜)的帶寬往往可以達(dá)到幾百Tbps。而終端用戶實(shí)際可用的帶寬,往往是網(wǎng)絡(luò)服務(wù)所在服務(wù)器的上行帶寬與用戶下行帶寬的最小值。
若某一網(wǎng)站部署在上行帶寬為1Mbps服務(wù)器上,那么即使訪問(wèn)者擁有100Mbps的下行帶寬,用戶仍然只能以1Mbps的速度下載網(wǎng)頁(yè)上的內(nèi)容。
2.4.聯(lián)系與區(qū)別
對(duì)終端用戶而言,延時(shí)可以理解為某一網(wǎng)絡(luò)服務(wù)的響應(yīng)速度,而帶寬可以理解為上傳下載文件的最大速度,而實(shí)際可用的帶寬,往往又是由網(wǎng)絡(luò)服務(wù)所在服務(wù)器的上行帶寬與用戶下行帶寬的最小值所決定。
以瀏覽網(wǎng)頁(yè)為例子,若響應(yīng)速度快,用戶實(shí)際可用的帶寬(見2.3節(jié)的定義)小,就可能導(dǎo)致頁(yè)面上的圖片以肉眼可見的速度一點(diǎn)點(diǎn)顯示出來(lái);若響應(yīng)速度慢,用戶實(shí)際可用的帶寬大,就可能導(dǎo)致頁(yè)面上的內(nèi)容需要等待很久才能有顯示,在此之前都是空白。但是當(dāng)響應(yīng)完成,會(huì)立即顯示網(wǎng)頁(yè)內(nèi)容。
有人說(shuō)帶寬和時(shí)延沒(méi)有關(guān)系,這句話是有問(wèn)題的。因?yàn)樵?.2節(jié)中介紹了發(fā)送延時(shí),它通常由服務(wù)器的上行帶寬與用戶下行帶寬的最小值所決定。準(zhǔn)確的說(shuō)是,目前現(xiàn)實(shí)場(chǎng)景中大部分的時(shí)延不是由帶寬決定,而往往是由傳播距離、網(wǎng)絡(luò)狀況等所決定。
3.性能優(yōu)化
了解了帶寬和時(shí)延,那么就可以更好地理解網(wǎng)站性能優(yōu)化背后的本質(zhì)——減少延時(shí),增加帶寬。常見的性能優(yōu)化的方式有合并請(qǐng)求和建立內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN):
合并請(qǐng)求。從優(yōu)化角度來(lái)說(shuō),合并請(qǐng)求就是在減少總時(shí)延。一個(gè)100KB的文件和 10個(gè)10KB大小的文件大小相同。若D為傳播時(shí)延,T為發(fā)送10KB文件的發(fā)送時(shí)延,那么一次發(fā)送100KB文件的時(shí)延為 D + 10T,而發(fā)送10次單個(gè)10KB文件的延時(shí)為 10D+10T。相同情況下,請(qǐng)求次數(shù)越少,總時(shí)延就越少。
建立內(nèi)容分發(fā)網(wǎng)絡(luò)。內(nèi)容分發(fā)網(wǎng)絡(luò)通過(guò)將網(wǎng)站內(nèi)容服務(wù)器分布在靠近用戶的位置,從而使用戶就近獲取所需內(nèi)容,減少傳播延時(shí),進(jìn)而顯著提升網(wǎng)站的響應(yīng)速度。
舉例來(lái)說(shuō),高質(zhì)量的視頻網(wǎng)站必須租用高速的上行帶寬,確保能夠承擔(dān)大規(guī)模的視頻流量,因?yàn)闆](méi)人愿意等待幾分鐘緩沖一個(gè)流媒體視頻。同時(shí)它也要在各地建立大規(guī)模的內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)來(lái)降低視頻內(nèi)容的傳播延遲,這樣才不會(huì)讓用戶等待很久才能獲得網(wǎng)站的響應(yīng)。
4.總結(jié)
本文網(wǎng)絡(luò)應(yīng)用優(yōu)化中最重要的兩個(gè)目標(biāo):時(shí)延與帶寬。通過(guò)定義并區(qū)分兩者的關(guān)系,并引申出網(wǎng)絡(luò)服務(wù)優(yōu)化的幾種基本方法。和所有的教程一樣,本文不可能涵蓋到網(wǎng)絡(luò)優(yōu)化的所有細(xì)節(jié),但是若能對(duì)你有所啟發(fā),那就是再好不過(guò)了。
總結(jié)
以上是生活随笔為你收集整理的网络应用优化——时延与带宽的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++ 是 编程界 的 背锅侠
- 下一篇: 2019.3.2 区块链论文翻译