余競航,湯 雷,王 霖,洪 波
(1國網江蘇省電力有限公司信息通信分公司 江蘇 南京 210003)
(2南京基石數據技術有限責任公司 江蘇 南京 210093)
隨著互聯網的高速發展,網絡規模不斷擴大,應用訪問量顯著增加。對于服務器而言,用戶接入量、數據吞吐量呈幾何級增長,由于應用設備的局限性和網絡帶寬的限制,網絡傳輸文件造成的延時問題很大程度上影響了用戶體驗。當用戶與服務器地理距離較遠、下載文件較大時,這一影響更為嚴重。為了緩解這一問題,內容分發網絡(Content Delivery Network, CDN)應運而生[1]。近年來,隨著電力企業能源互聯網建設的推進,電力信息網絡的規模也在不斷擴大[2],各類應用訪問量持續增加,業務部署的服務器面臨日益增加的壓力,也讓相關系統和設備的運維部門面臨更大的挑戰[3]。為了解決這一問題,本文提出了一種基于Squid軟件的CDN網絡架構[4],探索了CDN技術在電力信息網絡中的應用可能性和效果[5]。
CDN技術從20世紀90年代末被提出以來,得到了迅速的發展。據統計,在2005年全球CDN市場規模為2.95億美元,而這一數字到2020年已飆升至100億美元。阿卡邁公司(Akamai)是CDN技術的發明者,也是現今最大的CDN服務提供商之一。在國內,華為、阿里、騰訊等公司也對CDN做了深入地研究并提供CDN服務。
CDN的提出是為了解決因分布、帶寬、服務器性能帶來的訪問延遲問題,適用于站點加速[6-8]、點播、直播等場景。
CDN網絡一般分為中心與邊緣節點兩部分,中心負責全局負載均衡與內容管理。中心節點的功能如下:
(1)隨時監控邊緣節點的健康狀況(可用性、擁塞程度);
(2)根據邊緣節點到請求端的距離,以及邊緣節點的健康狀況,按一定的策略重定向請求;
(3)與客戶主站進行數據同步更新。
負責為用戶提供內容服務的cache設備應部署在物理上的網絡邊緣位置,即CDN邊緣層。CDN系統中負責全局性管理和控制的設備組成中心層(二級緩存),中心層同時保存著最多的內容副本,當邊緣層節點未命中時,會向中心層請求,如果在中心層仍未命中,則需要中心層向源站回源進行請求。
CDN在原先的中心服務器基礎上,在不同地域分散部署多個邊緣節點緩存服務器[9]。當用戶發起訪問請求時,首先通過CDN全局負載均衡系統將請求導向某一邊緣節點,通常該節點距離用戶最近。若該節點已有對應內容的緩存,則直接發送給用戶,不需向中心服務器發起請求;若該節點沒有對應內容的緩存,則將請求轉發給中心服務器,將內容下載到邊緣節點保存,并發送給用戶。因此,對于中心服務器而言,CDN可以降低訪問量,減輕服務器壓力;對于用戶而言,CDN可以使很多內容直接從距離更近、訪問延時更短的邊緣節點發送給用戶,從而降低下載延時,尤其對于較大的靜態視頻等內容,有很好的加速效果。
根據前文所述,一個最簡單的CDN網絡包含一個中心服務器、一臺DNS服務器和若干個邊緣緩存服務器。從各部分功能而言,CDN的關鍵技術包含內容路由技術、內容分發技術和內容存儲技術等方面。
2.1.1 內容路由技術
內容路由技術是為了解決將用戶請求定向到最優的邊緣節點的問題,負載均衡是內容路由技術的核心[10]。原則上,對于用戶而言,通常距離最近的節點即是最優節點。因此,需要通過DNS服務器根據用戶IP地址進行判斷,并將用戶發起的URL請求,解析到對應的最優節點上。這一過程的實現便是內容路由技術的重點之一。另外,對于更完善的CDN網絡,當某一節點出現故障時,CDN應當具有及時探活并更改解析結果的能力,從而利用好CDN網絡的節點服務器冗余這一優勢,減少服務器或網絡故障對用戶造成的影響。
2.1.2 內容分發技術
內容分發技術是指中心服務器向邊緣節點分發內容這一過程的實現手段。對于靜態內容,CDN通常采用被動分發的方式,即當有用戶向邊緣節點發起請求而該內容在邊緣節點沒有緩存時,邊緣節點向中心服務器轉發請求并緩存這一內容,在此過程中,中心服務器被動分發了內容。但對于一些具有實時性、延時要求高的特定內容,如直播視頻流等,則需要中心服務器主動向邊緣節點推送內容。另外,邊緣節點緩存內容需要設置一定的有效期,防止中心服務器中內容發生更新而邊緣節點更新不及時,影響用戶訪問。在此基礎上,對于重要內容,中心服務器發生更新時應主動向邊緣節點推送,使邊緣節點內容能夠及時更新。
2.1.3 內容存儲技術
內容存儲技術主要針對邊緣節點。由于中心服務器的內容大小、格式、類型等不盡相同,對于可靠性、延時等的要求也不一,因此邊緣節點需要特殊的內容存儲和管理模式,以滿足不同的需求。此外,當中心服務器訪問量并不大,邊緣節點性能還有較大利用空間時,同一套CDN網絡也可以復用到不同的應用中,即同一組邊緣節點可以指向多個不同的中心服務器,同時實現多個應用的加速。此時,數據存儲的可靠性、穩定性和安全性也對相關技術提出了更高的要求。
CDN架構下的解析流程如下:當用戶發出請求,通過本域DNS系統的解析,其最后會在CDN專用DNS服務器上進行域名解析[11]。CDN的全局負載均衡設備IP地址通過其DNS服務器反饋用戶[12]。用戶向均衡設備發起內容訪問請求[13]。其根據用戶IP地址以及用戶請求的內容URL,選擇一臺用戶所屬區域的區域負載均衡設備,并通知用戶向選擇的設備發起請求。最后,區域負載均衡設備會向全局負載均衡設備返回一臺緩存服務器的IP地址:根據用戶IP地址,判斷哪一臺服務器距用戶最近;根據用戶所請求的URL中攜帶的內容名稱,判斷哪一臺服務器上有用戶所需內容;查詢各個服務器當前的負載情況,判斷哪一臺服務器尚有服務能力。全局負載均衡設備把服務器的IP地址返回給用戶。
根據上述CDN技術特點,相較于傳統的簡單B/S網絡架構,完整的CDN網絡具有以下優勢。
2.3.1 提高響應速度
采用分布式存儲,通過臨近代理緩存節點的cache加速,提高用戶請求的響應速度,提高了企業站點(尤其含有大量圖片和靜態頁面站點)的訪問速度,并大大提高此類站點的穩定性[14]。
2.3.2 提升訪問質量
通過鏡像服務可兼容不同運營商網絡的互聯,實現了跨運營商的網絡加速,使得處于不同網絡中的用戶都能有較高的訪問質量。
2.3.3 智能負載分擔
遠程訪問用戶根據DNS負載均衡技術智能自動選擇Cache服務器[15],選擇最快的Cache服務器,加快遠程訪問的速度[16]。
2.3.4 減輕網絡負載
自動生成服務器的遠程Mirror(鏡像)Cache服務器,遠程用戶訪問時從Cache服務器上讀取數據,減少遠程訪問的帶寬、分擔網絡流量、減輕原站點WEB服務器負載等功能。
2.3.5 加固安全防護
CDN眾多邊緣節點實現了冗余,降低節點間耦合度,廣泛分布的CDN節點加上節點之間的智能冗余機制,可以有效地預防黑客入侵以及降低各種DDoS攻擊對網站的影響,同時保證較好的服務質量。
為研究CDN在電力信息網絡中應用的可行性和實際效果,本文選擇某省電力公司信息內網進行網絡部署,并針對公司門戶網站這一應用進行實驗驗證。該應用部署于省會數據中心某服務器,將其作為中心服務器,另外部署Bind作為專用DNS服務器,通過訪問控制列表等的配置即可實現定制化重定向功能[17]。對于最重要的邊緣節點服務器,選用開源軟件squid在地市服務器上進行部署。CDN網絡整體架構[18-21]如圖1所示。

圖1 電力信息網絡中部署的CDN網絡架構
squid是一款高性能的代理緩存服務器,也是目前應用最廣泛、技術最成熟的一種。它支持FTP、Internet Gopher、HTTPS和SSL等多種協議,可運行于大多數操作系統上,本文中將其部署于CentOS系統。安裝完成后,需在后臺配置監聽端口、訪問控制、代理IP地址等,還可以根據需要設置緩存空間大小、被緩存文件大小范圍、日志保存地址、各類文件存活時間等參數。
對于電力信息網絡用戶而言,代理緩存服務器本身的存在并不需要被用戶感知,CDN的使用與否應當對用戶透明,因此,本文將邊緣節點配置為反向代理服務器。用戶不需要進行本地設置,只需要像往常一樣通過域名訪問,即可被重定向到邊緣節點上。
配置完成后,在某地市一臺終端訪問門戶網站進行測速實驗。首次通過CDN網絡訪問時,相對于直接訪問中心服務器并沒有加速,甚至加載時間略微變長,這是由于此時邊緣節點還沒有緩存內容,而多次重定向反而會增加延時。當第二次訪問時,頁面加載速度,尤其是其中靜態視頻之類大文件的下載速度變快了很多。多次試驗后證明,這一實驗場景下,CDN可使視頻加載速度提升至原來的三倍左右。
除了該應用之外,本文還對一些諸如在線學習系統、融媒體系統、流媒體直播系統等應用做了進一步驗證,都取得了一定的加速效果。但綜合而言,CDN網絡對靜態大文件的加速效果是最好的,普通小文件本身加載速度就比較快,對于用戶體驗的改善有限,而對于流媒體文件,則需要進一步優化CDN網絡設計,應用主動分發內容的技術,才能有更好的應用效果。
本文研究了CDN網絡的應用場景、發展進程和技術特點,并在電力信息網絡中搭建實驗網絡,驗證了基于Squid軟件的CDN網絡對部分電力信息應用的加速效果。實驗證明,對于靜態大文件,如視頻文件等,CDN具有很好的加速效果,在某些場景下可使文件下載速度提升至三倍。對于未來電力信息網絡中CDN的應用,首先,需要進一步研究CDN對更多類型系統、文件的應用方法,盡量使同一組代理緩存服務器同時應用到多個不同系統上,最大化CDN利用率。其次,對于更復雜、更高要求的內容路由技術,普通DNS服務器并不能滿足要求,還需要進一步研究負載均衡算法等,提升CDN網絡魯棒性。最后,在路由、緩存等技術驗證完善后,對于文件管理、日志管理等還需進一步嚴格把控,以滿足日后在更多實際系統中的推廣和應用需求。