網(wǎng)絡(luò)的物理限制以及地理距離都會在不同程度上造成服務(wù)器至客戶端設(shè)備的數(shù)據(jù)傳輸延遲。把你的應(yīng)用程序從內(nèi)部硬件設(shè)備上遷至云計算以獲得按需可擴展的優(yōu)勢,但這只是解決了一些擴展和性能方面的問題。網(wǎng)絡(luò)延遲、數(shù)據(jù)包丟棄以及其他的網(wǎng)絡(luò)問題都會對最終用戶使用體驗產(chǎn)生不利的影響。
物理距離是產(chǎn)生延遲問題的一個決定性的因素,它主要會影響從一臺設(shè)備發(fā)送數(shù)據(jù)包到另一臺設(shè)備所需的往返時間。例如,從美國東海岸發(fā)送數(shù)據(jù)至西海岸就可能會產(chǎn)生40至50毫秒的延遲。而同一數(shù)據(jù)包從北美發(fā)送至歐洲的往返時間約為80至90毫秒——幾乎為前者的兩倍。而跨太平洋的數(shù)據(jù)傳輸則需要花費更長的時間,其延遲時間要超過100毫秒。
雖然我們無法違反基本的物理規(guī)律,但是通過使用內(nèi)容交付網(wǎng)絡(luò)(CDN)、TCP優(yōu)化以及對等協(xié)議等措施,我們就能夠消除一些對應(yīng)用程序性能造成不利影響的因素。
使用CDN復(fù)制靜態(tài)內(nèi)容
諸如文字、圖像以及音頻文件這樣的靜態(tài)內(nèi)容通常都是網(wǎng)站和應(yīng)用程序的重要組合部分。這是因為這一類內(nèi)容根據(jù)定義不會發(fā)生頻繁的變化,所以我們可以利用復(fù)制技術(shù)來減少在用戶請求內(nèi)容和接收到內(nèi)容之間所需的時間。CDN是由地理上分布的服務(wù)器組成的,在這些服務(wù)器上保存著可供他們客戶使用的內(nèi)容。當一個用戶請求內(nèi)容服務(wù)時,這個請求就會被分配至距離用戶最近的服務(wù)器。例如,一名在芝加哥的用戶就可能會從位于紐約的一臺服務(wù)器上接收到所請求的內(nèi)容,而在阿姆斯特丹請求同一內(nèi)容的一名用戶就可能從一臺位于柏林的服務(wù)器上接收內(nèi)容。
CDN管理著跨所屬服務(wù)器上內(nèi)容數(shù)據(jù)的復(fù)制。你只需上傳內(nèi)容至一個站點,而CDN就會根據(jù)需要分發(fā)更新內(nèi)容至其他的服務(wù)器。
針對動態(tài)內(nèi)容優(yōu)化TCP協(xié)議
通常情況下,一個應(yīng)用程序?qū)㈨憫?yīng)用戶的服務(wù)請求而生成動態(tài)內(nèi)容。例如,一個用戶可能會請求應(yīng)用程序生成一個滿足某些標準的交易列表。這里,復(fù)制靜態(tài)內(nèi)容就顯得無能為力了。
當涉及生成動態(tài)內(nèi)容的應(yīng)用程序時,我們就會考慮優(yōu)化傳輸控制協(xié)議(TCP)了。TCP協(xié)議是大多數(shù)需要可靠通訊通道支持的應(yīng)用程序所使用的協(xié)議。TCP協(xié)議可確保數(shù)據(jù)包被發(fā)送至它們的目標設(shè)備,并以正確的順序組成,否則就會生成錯誤提示。
網(wǎng)絡(luò)是易受到外界干擾的( 例如伴有噪聲干擾的信號),和具有內(nèi)部局限性的(如無法處理高數(shù)據(jù)流量應(yīng)用的低容量緩存)。這類問題都會引起TCP數(shù)據(jù)包發(fā)生掉包事件的。
接收數(shù)據(jù)包的設(shè)備必須確保數(shù)據(jù)的完整性和準確性,必須建立相應(yīng)的機制來跟蹤已接收到哪些數(shù)據(jù)包以及仍在等待哪些數(shù)據(jù)包。在經(jīng)過了一段足夠長的等待時間之后,這個設(shè)備就會發(fā)送一個請求,要求重新發(fā)送本應(yīng)已接收但實際未接收到的數(shù)據(jù)包。TCP協(xié)議中有大量的參數(shù)是用于確定客戶端將等待待接收數(shù)據(jù)包多長的時間以及當發(fā)生數(shù)據(jù)包丟失時應(yīng)重新發(fā)送多少個數(shù)據(jù)包的。優(yōu)化技術(shù)可調(diào)整這些參數(shù)以提高性能。
優(yōu)化措施可以被內(nèi)置到操作系統(tǒng)中,例如Windows操作系統(tǒng),單機應(yīng)用程序也可用于幫助調(diào)試TCP參數(shù)。當在不同設(shè)備之間傳輸大文件時,還可以使用專門的傳輸應(yīng)用程序。這些應(yīng)用程序可替代TCP協(xié)議或調(diào)整TCP協(xié)議中的參數(shù),使之更利于文件傳輸。當你在一組已知的設(shè)備之間進行數(shù)據(jù)傳輸或應(yīng)用程序已準備就緒可供任何用戶使用時,這些都是可行的解決方案。
擁有全球網(wǎng)絡(luò)的供應(yīng)商們能夠?qū)?shù)據(jù)中心之間的數(shù)據(jù)流量進行優(yōu)化。這就能夠讓客戶享受到TCP優(yōu)化的好處而無需自行實施TCP優(yōu)化。
在網(wǎng)絡(luò)服務(wù)供應(yīng)商之間制定協(xié)議
在技術(shù)層面上,數(shù)據(jù)在網(wǎng)絡(luò)之間進行傳輸是很容易實現(xiàn)的,但是在業(yè)務(wù)層面,網(wǎng)絡(luò)服務(wù)供應(yīng)商之間的協(xié)議將決定在網(wǎng)絡(luò)之間傳輸什么樣的數(shù)據(jù)。供應(yīng)商們維護著一組協(xié)議,以允許在他們網(wǎng)絡(luò)之間進行數(shù)據(jù)交換,有時他們會為這種功能而互相收取費用。這些協(xié)議通常被稱為對等協(xié)議,它們能夠造成網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)难舆t,因為由于某些供應(yīng)商之間對等的限制而不得不通過更慢、更低效的途徑進行數(shù)據(jù)傳輸。