大(Big)型網站,比如門戶網站。在(Exist)面對大(Big)量用(Use)戶訪問、高并發請求方面,基本的(Of)解決方案集中在(Exist)這(This)樣幾個(Indivual)環節:使用(Use)高性能的(Of)服務器、高性能的(Of)數據庫、高效率的(Of)編程語言、還有高性能的(Of)Web容器。但是除了這(This)幾個(Indivual)方面,還沒法根本解決大(Big)型網站面臨的(Of)高負載和(And)高并發問題。上面提供的(Of)幾個(Indivual)解決思路在(Exist)一(One)定程度上也意味着更大(Big)的(Of)投入,并且這(This)樣的(Of)解決思路具備瓶頸,沒有很好的(Of)擴展性,下面我(I)從低成本、高性能和(And)高擴張性的(Of)角度來(Come)說說一(One)些經驗。
1、HTML靜态化 其實大(Big)家都知道,效率最高、消耗最小的(Of)就是純靜态化的(Of)html頁面,所以(By)我(I)們盡可能使我(I)們的(Of)網站上的(Of)頁面采用(Use)靜态頁面來(Come)實現,這(This)個(Indivual)最簡單的(Of)方法其實也是最有效的(Of)方法。但是對于(At)大(Big)量内容并且頻繁更新的(Of)網站,我(I)們無法全部手動去挨個(Indivual)實現,于(At)是出(Out)現了我(I)們常見的(Of)信息發布系統CMS,像我(I)們常訪問的(Of)各個(Indivual)門戶站點的(Of)新聞頻道,甚至他(He)們的(Of)其他(He)頻道,都是通過信息發布系統來(Come)管理和(And)實現的(Of),信息發布系統可以(By)實現最簡單的(Of)信息錄入自動生(Born)成靜态頁面,還能具備頻道管理、權限管理、自動抓取等功能,對于(At)一(One)個(Indivual)大(Big)型網站來(Come)說,擁有一(One)套高效、可管理的(Of)CMS是必不(No)可少的(Of)。
、圖片服務器分離 大(Big)家知道,對于(At)Web服務器來(Come)說,不(No)管是Apache、IIS還是其他(He)容器,圖片是最消耗資源的(Of),于(At)是我(I)們有必要(Want)将圖片與頁面進行分離,這(This)是基本上大(Big)型網站都會采用(Use)的(Of)策略,他(He)們都有獨立的(Of)圖片服務器,甚至很多台圖片服務器。這(This)樣的(Of)架構可以(By)降低提供頁面訪問請求的(Of)服務器系統壓力,并且可以(By)保證系統不(No)會因爲(For)圖片問題而崩潰,在(Exist)應用(Use)服務器和(And)圖片服務器上,可以(By)進行不(No)同的(Of)配置優化,比如apache在(Exist)配置ContentType的(Of)時(Hour)候可以(By)盡量少支持,盡可能少的(Of) LoadModule,保證更高的(Of)系統消耗和(And)執行效率。
3、數據庫集群和(And)庫表散列 大(Big)型網站都有複雜的(Of)應用(Use),這(This)些應用(Use)必須使用(Use)數據庫,那麽在(Exist)面對大(Big)量訪問的(Of)時(Hour)候,數據庫的(Of)瓶頸很快就能顯現出(Out)來(Come),這(This)時(Hour)一(One)台數據庫将很快無法滿足應用(Use),于(At)是我(I)們需要(Want)使用(Use)數據庫集群或者庫表散列。在(Exist)數據庫集群方面,很多數據庫都有自己的(Of)解決方案,Oracle、Sybase等都有很好的(Of)方案,常用(Use)的(Of)MySQL提供的(Of)Master/Slave也是類似的(Of)方案,您使用(Use)了什麽樣的(Of)DB,就參考相應的(Of)解決方案來(Come)實施即可。