大型網站架構設計系列

1、 數據結構和產品架構設計,這是基礎!

2、 角色分開,各司其職(web服務器,緩存服務器,負載平衡,數據庫等)

3、 HTML靜態化(用緩存服務器也可)

4、 圖片服務器分離,且使用lighttpd等輕量級服務器

5、 數據庫集羣和庫表散列

6、 緩存。
           a)架構方面的緩存,對Apache比較熟悉的人都能知道Apache提供了自己的mod_proxy緩存模塊,也可以使用外加的Squid進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力。

           b)網站程序開發方面的緩存,Linux上提供的Memcached是常用的緩存方案,不少web編程語言都提供memcache訪問接口,php、perl、c和java都有,可以在web開發中使用,可以實時或者Cron的把數據、對象等內容進行緩存,策略非常靈活。一些大型社區使用了這樣的架構。各種語言基本都有自己的緩存模塊和方法。

7、 鏡像。有很多專業的現成的解決架構和產品可選。也有廉價的通過軟件實現的思路,比如Linux上的rsync等工具。(多個服務器,youtube就是用rsync同步的)

8、 負載均衡。
         a) 硬件四層交換。比如Alteon、F5等,這些產品很昂貴,但是物有所值,能夠提供非常優秀的性能和很靈活的管理能力。
         b) 軟件四層交換。可以使用Linux上常用的LVS來解決,LVS就是Linux  Virtual  Server,他提供了基於心跳線heartbeat的實時災難應對解決方案,提高系統的魯棒性,同時可供了靈活的虛擬VIP配置和管理功能,可以同時滿足多種應用需求,這對於分佈式的系統來說必不可少
         c) 一個典型的使用負載均衡的策略就是,在軟件或者硬件四層交換的基礎上搭建squid集羣,這種思路在很多大型網站包括搜索引擎上被採用,這樣的架構低成本、高性能還有很強的擴張性,隨時往架構裏面增減節點都非常容易。

9、 常用方式。前層的反向代理加速—Web  Server—Cache  Server—DB。而負載均衡的方式也使用瞭如DNS輪循或部分硬件負載均衡設備來承擔大流量.(DIY也未嘗不可,一臺1U的IA32硬件設備,  板子需要是爲fw,switch設計的,  使用FreeBSDϖ作系統,  主要是FS和slab的改寫會是技術活)。做Web  加速和代理的軟件如Lighttpd,  Nginx,HAproxy.(可以不用考慮了,配置不好,不能很好的表現)壓縮工具BMDiff  和  Zippy(google就用了這兩種技術,主要用於壓縮網頁數據,壓縮比達到10:1——估計是存檔數據,不是運算數據)

10、 選擇ISP注意其地區帶寬分佈是否平衡一致;區域DNS是否優化等

11、 其他:
         a) 緩存,包括CND還是比較昂貴的,在確定緩存時要根據不同內容的訪問頻度進行劃分,特別是注意觀察緩存的命中率,如果不能達到50%以上就有問題了

         b)log是所有性能調試的起點,從development  log到production  log,從rails  log到web  server  log,不同的log有不同的側重點,學會分析log,每個log都可能爲你提供解決問題的蛛絲馬跡。另外,要熟練使用benchmark結合log做profiling,當real  time遠大於db  time  +  rendering  time的時候,這點尤其重要。

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