cdn內部結構

               

   

之前在設計自建cdn的內部結構時寫的一些文字,簡單貼下。

內部節點方案。大部分公司的做法都是lvs+keepalived

幾個廠商的不同作法:

1.pptv  keepalived+nginx+squid+ts  節點靈活性比較高,小節點多機房,30左右節點數量,70臺左右的機器

2.迅雷  lvs+keepalived+ts+squid  lvs是公用的,其他業務也會用到(機房業務比較多)

3.京東  lvs+keepalived+haproxy+squid  大幾點,20幾個機房,500臺左右的機器

4.新浪  lvs+keepalived+nginx+ts.  40左右節點,都算大節點。每節點數量在30臺左右,利用率80%

5.淘寶  lvs+keepalived+haproxy+ts  大節點,多服務,ssd。。。流量超大。

準備採用的Cdn整體結構及內部結構:

1gslb,全局負載均衡使用三方智能dns解析,控制用戶到cdn節點的調度(cloudxns,支持到城市的調度,收費1999/(域名/)

2lslb(本地負載均衡):

方案1

4層使用lvs+keepalived7層使用nginx,這樣就可以保證4層到7層的高可用性和擴展性,單節點最少需要5個公網IP4臺機器

方案2

4層使用keepalived, 7層使用nginx,單節點最少需要4個公網IP2臺機器,對比方案1的缺點是不能支持4-----7層的檢測(即,機器掛掉可以實現auto failovernginx掛掉不能)

Cache系統使用apache traffic server(對比squid,響應更快,性能更強)

3cdn節點到源站回源使用bind+lvs每個bind集羣至少需要4臺機器,現節點對回源dnsha要求不高,可以暫時不考慮ha),構建回源dns的高可用。

4)源站構建在雙線核心機房,用來保證網通和電信各自的回源質量(目前條件不允許)

5)也可以在cdn節點和源站直接構建2cache(測試階段可以電信,網通各一個),來緩解源站的壓力(這個也是需要的,之前在pptv出現過邊緣回源壓垮源站的問題,如果能夠在2cache有效緩存,就可以避免這種情況)

提供下方案1Lvs+keepalived的結構圖:

幾點說明:

1.js,jpg,swf,gif等緩存時間比較長的,object size比較大的文件類型通過ats緩存,使用atsraw來優化io

2.htmlxml的文件緩存時間比較短,使用squid做緩存,squid只使用內存做緩存。

wKioL1MdfRHDMSecAAHqDLUfFqw879.jpg

ats的一些性能指標:

1.ats vs squid 性能對比

今天review了下ts的性能表現,由於使用了多線程異步處理模型和分離的各個模塊子系統,ts的性能要優於squid很多。從響應時間上來看,相同的請求數量下,ts減少了3倍(由0.04s減少至0.01s,而且響應時間趨於平穩。

下面爲具體的數據(只取upstream add含有127.0.0.1:8080的訪問記錄,即proxyts的訪問記錄。sql不再列舉)

取切換前後webcdn機器訪問數據,環比12.20,12.06,12.13的數據來看。

1.訪問量

12.6號的訪問量和12.20號的訪問量趨勢相當

wKiom1Mdhl_xhCEqAAE4HySCUAw026.jpg

2.)平均響應時間:

更換成ts後,響應時間明顯降低,由12.6號的。0.04s左右降低至0.01s,而且整體趨勢比較平穩,在流量高峯時響應時間也未見大幅增加。而更換ts之前的數據顯示,在12-13點,18-20點的流量高峯時,響應時間都較正常時段有所增加。

wKioL1MdhkSAG0cNAAGQdYHs0uA446.jpg

12.20號數據環比一天情況

整體的響應時間,13點左右,squid轉成ts,平均響應時間降低至0.01s左右。

wKioL1MdhnHgDkhWAAD6na2zbzM537.jpg

zabbix監控圖:

wKiom1MdhqSgRUXTAAGyyis2GQc842.jpg

相同訪問量的情況下,squidats響應時間對比(都未到達瓶頸),ts很平穩。比squid也低不少

rt,,urt:

(可以看到nginxrequest_time也有兩個高峯,相反ts倒是很平穩)

wKiom1Mdh2TDbbQIAAEN48Xe6GY875.jpg

nginx-proxy交互使用的時間:

(有兩個明顯的高峯,後端squid的響應沒有這麼明顯的變化,應該是nginx--squid的交互問題,比如長連接的支持,連接的複用)

wKioL1Mdh3nixvhnAAEoUzhWdnQ395.jpg


切換前後響應時間對比圖:

wKiom1Mdh62T3Kw7AAQqeJefycI998.jpg



2. ats  raw   vs  ext3 io性能對比

相同流量下Tps,rtps,wtps的結果

Tps的比例是ram:ext3=1:2.45,從趨勢圖上也可看出,使用raw時,io是比較穩定和集中的,而使用ext3文件系統時,由於會有buffer flush的行爲,Io會每隔一段時間出現高峯值,不會穩定。

raw:

平均tps:98.59

平均wtps:50.32

平均rtps:48.27

ext3:

平均tps:241.99

平均rtps:144.61

平均wtps:97.38

wKioL1Mdh5yAwj4dAAOaH7SKxH4806.jpg

響應時間對比

tsupstream的時間來看,tsraw ext3兩種情況下,響應時間變化不大,也比較平穩。

nginx request time在高峯期時變化比較明顯

Avg-upstream_time avg_request_time   (type):
0.0024 0.0090 (ext3)

0.0026  0.0093 (raw)

wKiom1Mdh9CgmLmjAAE5SmUn0Yw547.jpg

目前結論:Ts 使用raw的情景下,會有效的減低io的操作數,減少io的消耗,比例是ram:ext3=1:2.45,ts的響應速度上基本沒有變化。按現在的cdn節點壓力來看,io還沒有到達性能的瓶頸,所以可以暫不考慮raw的方案,如果以後機器的壓力上去了,io成爲瓶頸的話,可以將ext3換成raw


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章