工作上雖然和cdn沒(méi)關(guān)系但是技術(shù)方向還是很多相似之處的,例如:負(fù)載均衡,緩存,分布式,路由等。
cdn簡(jiǎn)單的說(shuō)就是個(gè)復(fù)雜的大緩存,由于目標(biāo)用戶(包括源和端)廣泛直接導(dǎo)致了其復(fù)雜性,遍布廣節(jié)點(diǎn)多則需要分流負(fù)載甚至自組織,應(yīng)用繁雜則需要分流路由,提速則需要緩存,穩(wěn)定則需要監(jiān)控調(diào)度,為了透明則需要各種映射。
由于接入面廣和網(wǎng)絡(luò)的復(fù)雜性,不可能讓客戶端直接面對(duì)源,于是就有了專門(mén)接入客戶端的邊緣服務(wù)器/組,這些邊緣服務(wù)器和后端的調(diào)度,監(jiān)控,源服務(wù)器通訊。既然是緩存就涉及到數(shù)據(jù)一致性的問(wèn)題,最簡(jiǎn)單的就是各接入端的邊緣服務(wù)器在需要的時(shí)候到后臺(tái)拉取,或者更智能的他們之間可以相互拉取,甚至后臺(tái)調(diào)度提前推送。
邊緣接收到請(qǐng)求后首當(dāng)其沖的問(wèn)題就是對(duì)請(qǐng)求的內(nèi)容 “去哪找”和“怎么去”,想要知道內(nèi)容的位置,一般緩存的實(shí)現(xiàn)不外乎就是統(tǒng)一到一個(gè)目錄服務(wù)器找,或者廣播所有自己知道的節(jié)點(diǎn)問(wèn)一圈,更高效的方法是將請(qǐng)求url哈希后直接找到目的地址,當(dāng)然只要是緩存都會(huì)過(guò)期也就有TTL的概念。“怎么去”的方式多種多樣,由于互聯(lián)網(wǎng)web服務(wù)居多基于DNS的路由使用最廣泛,缺點(diǎn)是客戶端和中繼點(diǎn)會(huì)緩存,更新需要一定時(shí)間。HTTP重定向,URL改寫(xiě),也有直接在網(wǎng)絡(luò)設(shè)備路由器上做,直接在路由表中保持路徑。這些方法在cdn這個(gè)龐雜的系統(tǒng)中根據(jù)需要使用,例如邊緣服務(wù)器為了接收到客戶端的請(qǐng)求可以使用dns重定向,然后再用哈希或者url改寫(xiě)轉(zhuǎn)發(fā)到后端的源。
現(xiàn)如今的網(wǎng)絡(luò)內(nèi)容有許多是動(dòng)態(tài)生成的,對(duì)這些無(wú)法提前緩存的內(nèi)容可以直接略過(guò)只存靜態(tài)內(nèi)容(分段緩存),組裝的時(shí)候發(fā)送回客戶端或者直接賦予邊緣服務(wù)器生成動(dòng)態(tài)內(nèi)容的能力(邊緣計(jì)算)當(dāng)然這對(duì)網(wǎng)頁(yè)的制作有規(guī)范。
面向大眾的服務(wù)都有潮汐效應(yīng),在熱點(diǎn)時(shí)段的訪問(wèn)量是平時(shí)的幾十上百倍(根據(jù)二八理論,80%的問(wèn)題都是在20%的地方出現(xiàn)的,熱點(diǎn)訪問(wèn)量也是大多訪問(wèn)小部分?jǐn)?shù)據(jù),如果能提前將熱點(diǎn)緩存于各邊緣服務(wù)器最直接有效),如果有自適應(yīng)的動(dòng)態(tài)調(diào)整功能整個(gè)服務(wù)會(huì)健壯很多。邊緣服務(wù)器是離用戶最近的,可以將每個(gè)節(jié)點(diǎn)看成組,組長(zhǎng)監(jiān)控負(fù)載自適應(yīng)的添加刪除組員(緩存服務(wù)器)以及更新dns,不允許組員跨組拉數(shù)據(jù)。當(dāng)然如果客戶端之間可以使用P2P相互取數(shù)據(jù)也是一個(gè)辦法。
當(dāng)前出現(xiàn)了基于流媒體的cdn,視頻內(nèi)容分發(fā)在后端以文件的形式傳輸(適合傳輸?shù)母袷礁咝В竭吘壏?wù)器再以流的形式和客戶端傳輸(不需要全部傳完即可開(kāi)始播放)。同時(shí)也要綜合考慮時(shí)段需求,視頻編碼策略也很重要。