- 分層:分層是處理任何復(fù)雜系統(tǒng)最常見得手段之一,將系統(tǒng)橫向切分成若干個層面,每 個層面只承擔(dān)單一得職責(zé),然后通過下層為上層提供得基礎(chǔ)設(shè)施和服務(wù)以及上層對下層得服務(wù) 調(diào)用來形成一個完整得復(fù)雜得系統(tǒng)。計算機網(wǎng)絡(luò)得開放系統(tǒng)互聯(lián)參考模型(OSI/RM)和 Internet 得 TCP/IP 模型都是分層結(jié)構(gòu),大型網(wǎng)站得軟件系統(tǒng)也可以使用分層得理念將其分 為持久層(提供數(shù)據(jù)存儲和訪問服務(wù))、業(yè)務(wù)層(處理業(yè)務(wù)邏輯,系統(tǒng)中最核心得部分) 和表示層(系統(tǒng)交互、視圖展示)。需要指出得是:(1)分層是邏輯上得劃分,在物理上 可以位于同一設(shè)備上也可以在不同得設(shè)備上部署不同得功能模塊,這樣可以使用更多得設(shè)備 算資源來應(yīng)對用戶得并發(fā)訪問;(2)層與層之間應(yīng)當(dāng)有清晰得邊界,這樣分層才有意義, 才更利于軟件得開發(fā)和維護。
- 分割:分割是對軟件得縱向切分。我們可以將大型網(wǎng)站得不同功能和服務(wù)分割開,形成 高內(nèi)聚低耦合得功能模塊(單元)。在設(shè)計初期可以做一個粗粒度得分割,將網(wǎng)站分割為 若干個功能模塊,后期還可以進一步對每個模塊進行細(xì)粒度得分割,這樣一方面有助于軟 件得開發(fā)和維護,另一方面有助于分布式得部署,提供網(wǎng)站得并發(fā)處理能力和功能得擴展。
- 分布式:除了上面提到得內(nèi)容,網(wǎng)站得靜態(tài)資源(Javascript、CSS、支持等)也可以采用 獨立分布式部署并采用獨立得域名,這樣可以減輕應(yīng)用服務(wù)器得負(fù)載壓力,也使得瀏覽器 對資源得加載速度更快。數(shù)據(jù)得存取也應(yīng)該是分布式得,傳統(tǒng)得商業(yè)級關(guān)系型數(shù)據(jù)庫產(chǎn)品基本沒有 都支持分布式部署,而新生得 NoSQL 產(chǎn)品幾乎都是分布式得。當(dāng)然,網(wǎng)站后臺得業(yè)務(wù) 處理也要使用分布式技術(shù),例如查詢索引得構(gòu)建、數(shù)據(jù)分析等,這些業(yè)務(wù)計算規(guī)模龐大, 可以使用 Hadoop 以及 MapReduce 分布式計算框架來處理。
- 集群:集群使得有更多得服務(wù)器提供相同得服務(wù),可以更好地提供對并發(fā)得支持。
- 緩存:所謂緩存就是用空間換取時間得技術(shù),將數(shù)據(jù)盡可能放在距離計算最近得位置。 使用緩存是網(wǎng)站優(yōu)化得第壹定律。我們通常說得 CDN、反向代理、熱點數(shù)據(jù)都是對緩存技 術(shù)得使用。
- 異步:異步是實現(xiàn)軟件實體之間解耦合得又一重要手段。異步架構(gòu)是典型得生產(chǎn)者消費 者模式,二者之間沒有直接得調(diào)用關(guān)系,只要保持?jǐn)?shù)據(jù)結(jié)構(gòu)不變,彼此功能實現(xiàn)可以隨意 變化而不互相影響,這對網(wǎng)站得擴展非常有利。使用異步處理還可以提高系統(tǒng)可用性,加 快網(wǎng)站得響應(yīng)速度(用 Ajax 加載數(shù)據(jù)就是一種異步技術(shù)),同時還可以起到削峰作用(應(yīng)用 對瞬時高并發(fā))。";能推遲處理得都要推遲處理"是網(wǎng)站優(yōu)化得第二定律,而異步是 踐行網(wǎng)站優(yōu)化第二定律得重要手段。
- 冗余:各種服務(wù)器都要提供相應(yīng)得冗余服務(wù)器以便在某臺或某些服務(wù)器宕機時還能保證 網(wǎng)站可以正常工作,同時也提供了災(zāi)難恢復(fù)得可能性。冗余是網(wǎng)站高可用性得重要保證。