開發時間久了,就會接觸到性能和並發方面的問題,如果說,在自己還是菜鳥的時候完全不用理會這種問題或者說有其他的高手去處理這類問題,那么,隨着經驗的豐富起來,自己必須要獨立去處理了。或者,知道思路也行,畢竟當下,分工如此精細,你也不太可能啥都干!
面對高性能高並發的應用場景,在開發者的層面可以做很多,如使用優化的代碼,優化的sql,讀寫分離,nosql緩存,頁面靜態化等等。但是代碼畢竟不能做所有的事,服務器集群,CDN則是更高級的手段。CDN到底如何工作的呢,讓我們來大概了解一下!
CDN的基礎百科資料也很多了,我也稍等提一下。CDN,Content Distribute Network,即內容頒發網絡。
【百度百科解釋】
其基本思路是盡可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。通過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet網絡擁擠的狀況,提高用戶訪問網站的響應速度。
轉化一下我別扭的理解就是,CDN是CDN服務商在全國各地部署許多服務器集群,通過某種協議攔截用戶訪問,為用戶提供就近服務,從而提高服務能力,減輕源站壓力,減輕國家主干網壓力的一種手段。
【攔截用戶訪問的方式】
基於DNS解析的攔截!提供網絡邊緣服務。
1)、用戶向瀏覽器提供要訪問的域名;
2)、瀏覽器調用域名解析庫對域名進行解析,由於CDN對域名解析過程進行了調整,所以解析函數庫一般得到的是該域名對應的CNAME記錄,為了得到實際IP地址,瀏覽器需要再次對獲得的CNAME域名進行解析以得到實際的IP地址;在此過程中,使用的全局負載均衡DNS解析,如根據地理位置信息解析對應的IP地址,使得用戶能就近訪問。
3)、此次解析得到CDN緩存服務器的IP地址,瀏覽器在得到實際的IP地址以后,向緩存服務器發出訪問請求;
4)、緩存服務器根據瀏覽器提供的要訪問的域名,通過Cache內部專用DNS解析得到此域名的實際IP地址,再由緩存服務器向此實際IP地址提交訪問請求;
5)、緩存服務器從實際IP地址得得到內容以后,一方面在本地進行保存,以備以后使用,另一方面把獲取的數據返回給客戶端,完成數據服務過程;
6)、客戶端得到由緩存服務器返回的數據以后顯示出來並完成整個瀏覽的數據請求過程。
【CDN負載均衡集群】
集群分三種:計算集群、負載均衡集群、高可用集群。
負載均衡集群(GSLB)就是,將多台彼此互聯的服務器共同分擔計算任務,將負載盡可能平均的分配到各台服務器上進行處理,從而提高處理能力!
CND緩存服務器核心思想:在用戶和內容服務器之間架構緩存服務器,將用戶最近訪問過的媒體數據緩存在離用戶較近的地方,以供后續重復訪問使用,部署集群充分利用各節點形成的強大計算能力。
【負載均衡原理分類】
按照協議分類可以分為:四層負載均衡(L4)、七層負載均衡(L7)。四層如:LVS,七層如:Nginx。
【GSLB全局負載均衡的實現方式】
基於DNS的解析方式,使用較多。
基於HTTP重定向方式的實現方式,流媒體使用較多。
基於IP路由方式,使用范圍有限,暫無商用!
【流媒體相關的幾個協議】
RTP(Realtime Transport Protocol)實時傳輸協議、RTCP(Realtime Transport Control Protocol)實時傳輸控制協議。
RTMP(Real Time Messaging Protocol)實時消息傳送協議。
HTTP Streaming,Progressive Download 漸近式下載的發展結果,目前最廣泛的流化協議。
【防盜鏈機制實現】
利用HTTP Referer字段。
利用登錄驗證。
利用cookie攜帶驗證信息。
使用POST下載。
使用圖形驗證碼。
使用動態密鑰。
在內容中插入數據。
打包下載,使用哈希碼驗證。
【SSL加速】
SSL加速板卡。
SSL加速設備。
【自行搭建CDN試驗工具】
安裝KVM。
安裝apache httpd。
安裝squid代理緩存服務器。
安裝LVS負載均衡服務器。
安裝BIND域名服務器。
安裝Nginx負載均衡服務器。
以上內容,來自《CDN技術詳解》一書,對於概念的東西有一定的了解了,但是對於實踐,還有很長的路要走,或者說不太必要也不太有機會實踐。理解、提升就好。