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