Web2.0的興起,掀起了互聯網新一輪的網絡創業大潮,互聯網不斷擴大的規模,日益增長的用戶羣,對互聯網網站建設提出了新的要求: 高性能和高可擴展性。
本文從網站架構層面介紹不同性能需求階段,網絡架構的演變和設計思考。
一、Nginx反向代理,實現負載均衡。
對於傳統的低流量應用,基本夠用,具有一定可擴展性。其中Nginx可以嵌套已經實現性能和服務擴展。
二,Varnish提升性能
爲了方便畫圖,我只寫了一個web,多數情況下都是多個web,其中增加了varnish對靜態、動態資源進行緩存,以提高性能,大體可提供數倍的性能。Varnish也有反向代理的能力,但Nginx更優秀,所以建議採用兩者配合的方式搭建架構。
三、緩存的使用以提升web性能
此處只是web服務本身性能提升,即圖2中的web1服務,不涉及整體架構。架構設計中增加了緩存數據庫,並不是每次訪問都去數據庫,從而大大提高效率,目前redis用的比較多,網上也很多對比資料,這裏就不廢話了。
四、消息中間件進一步提升web服務性能
ActiveMQ 是一個 MOM,具體來說是一個實現了 JMS 規範的系統間遠程通信的消息代理。用於以分佈式應用或系統中的異步、松耦合、可靠、可擴展和安全通信。這類的通訊組件很多,基本架構也大同小異,這裏也不多說了,簡單架構示意如下:
五、使用MongoDB
MongoDB 是一個基於分佈式文件存儲的數據庫。旨在爲 WEB 應用提供可擴展的高性能數據存儲解決方案。應用後架構如下
六、應用MogileFS
MogileFS是一個開源的分佈式文件存儲系統,用來分擔海量小文件的存取工作,架構如下:
七、總結
- 使用Ngnix做負載均衡,以應對高併發的訪問
- 使用varnish和Memcached/redis來再不同層面做緩存,以提高性能
- 使用ActiveMQ來實現異步業務處理,來提高系統性能和可伸縮性。
- 使用MongoDB來支持海量數據處理,同時也提高系統可伸縮性。
- 使用MogileFS來支持海量小文件的存儲。