一、CDN
1
什麼是 CDN
CDN(content delivery network)全稱是内容分發網絡。
Internet 超級快遞員(圖檔、文本、音樂、電影、消費訂單、微網誌。。。)
2
CDN 的作用
1、防禦入侵,抵禦攻擊,保證服務品質
2、使用者體驗(控制時延)
CDN 就是盡可能的減少資源在轉發、傳輸、鍊路抖動等情況下通路時延,確定使用者快速準确的通路效果。
3、省時、省力、省錢
二、QunarCache(CDN+Cache)
大家都知道 CDN 其實就是架在使用者身邊的一層代理,真正提供服務的是最終通路到的源站。
那如何來預防 CDN 崩潰導緻的大流量回源呢?
1
CDN++
1、多家 CDN 實作資源多節點、多備份、多保障
2、通過智能 DNS 實作不同營運商的 DNS 解析控制,保證通路分流到各家待配置設定的 CDN
3、多家之間對比服務(服務品質、售後、價格等等)
2
CDN + Cache
1、CDN 後面增加一層自建 Cache,保證源站的安全
2、多區域部署,實作專屬線路的網絡優勢和保護
三、QunarCache 的效果
這樣的架構到底為我們實作了怎麼樣的保護呢?
一家 CDN 挂掉導緻大流量湧入我們的 Cache 叢集,Cache 逐漸增長的壓力正在消化這部分突發流量,而保護了我們的源站免于突發和大流量帶來的壓力。
1
Cache 的選型
Squid、Varnish、ATS(Apache Traffic Server)、Nginx
名稱 | 江湖地位 | 所屬門派 | 江湖威望 |
Squid | 曆史悠久,成熟,老套 | 資源量較大,并發不高 | 3星:技術成熟專業,多執行個體實作 |
Varnish | 初出茅廬知天下三分 | 熱點集中,緩存總量不大 | 2星:性能高,但不适合我們 |
ATS | 異族高手,高深莫測 | 全能 | 2星:功能強大,性能好,維護成本高,有點難 |
Nginx | 十全大補丹,劍走偏鋒 | 全能 | 2星:不夠成熟,維護成本較高 |
按需而行
1、我們的資源總量大、熱點不集中、緩存更新頻繁......
2、選型 Nginx + Squid
四、QunarCache 成長
1
Nginx + Squid Sliblings
該模式有效的達到記憶體的的橫向擴充,避免了資源重複消耗及緩存資料的查詢時間,但隻适合小叢集。
2
Nginx UriHash + Squid
該模式即轉嫁了 Cache 的查詢壓力,又實作了 Cache 容量的橫向擴充,随着我們的叢集擴大,逐漸取代原有的模式。
相比原有模式,該結構起到的作用。
3
Nginx UriHash + Squid 多程序
用過 Squid 的同學都知道,Squid 雖然優點很多,但卻是個性能短版的單程序服務,是以我們在原有基礎上通過增加 Squid 程序來實作性能的提升。
那性能上有多大的提升呢?
五、QunarCache 的運維
1
三方檢測,提升 QunarCache 的服務體驗
了解使用者的通路體驗(最後的一公裡)
監控 QunarCache 的服務狀況
2
區分業務,多叢集獨立服務管理
需求不同,側重點區分
充分利用現有硬體資源
3
Saltstack 實作服務上下線
區分叢集和基礎硬體的差異
統一操作實作快速部署
六、QunarCache 改進方向
1
資料時代
收集 CDN 日志,并進一步分析
● 通路效果
● 性能資料監控
● 取樣報警
2
自助切換
完善 CDN 通路監控,結合 QunarDNS 實作自助故障切換
作者:段凱
來源-微信公衆号:Qunar技術沙龍
出處:https://mp.weixin.qq.com/s/bWR0RzeRt5uVUr4taBWSUA