天天看點

大型網站技術架構:核心原理與案例分析—第二章:大型網站架構模式

1,網站架構模式

1)分層:橫向,企業應用系統中最常見的一種架構模式,将系統在橫向次元上切分成幾個部分,每個部分負責一部分相對比較單一的職責,然後通過上層對下層的依賴和調用組成一個完整的系統。一般分為應用層、服務層、資料層

優勢:便于分工合作開發和維護

挑戰:必須合理規劃層次邊界和接口,以及在開發過程中要嚴格遵循分層架構的限制,進制跨層次的調用以及逆向調用。

2)分割:縱向,将不同的功能和服務分割開來,包裝成高内聚低耦合的子產品單元有助于軟體的開發和維護,并且便于不同子產品的分布式部署,提高網站的并發處理能力和功能擴充能力。

3)分布式:将通過分層和分割後的不同子產品部署在不同的伺服器上,通過遠端調用協同工作。

分布式遇到的問題:

服務調用必須通過網絡,對性能造成比較嚴重的影響

伺服器越多,伺服器當機的機率越大

保持資料一緻性困難

導緻網站依賴錯綜複雜,開發管理維護困難

在網站應用中,常見的分布式方案有以下幾種:

布式應用和服務

分布式靜态資源

分布式資料和存儲

分布式計算

其他(分布式配置、分布式鎖、分布式檔案系統)

4)叢集:多台伺服器部署相同應用構成一個叢集,通過負載均衡裝置共同對外提供服務。

5)緩存:将資料存放在距離計算最近的位置以加快處理速度。緩存是改善軟體性能的第一手段。

常見緩存:

CDN(内容分發網絡)部署在距離終端使用者最近的網絡服務商

反向代理:網站前端架構的一部分,部署在網站的前端,緩存網站的靜态資源

本地緩存:在應用伺服器本地緩存存放熱點資料

分布式緩存:将資料緩存在一個專門的分布式緩存叢集中。

6)異步:将一個業務操作分成多個階段,每個階段之間通過共享資料的方式異步執行進行協作。在單一伺服器内部可以通過多線程貢獻記憶體隊列的方式實作異步;分布式系統中,多個伺服器叢集通過分布式消息隊列實作異步。

異步消息隊列的特性:

提高系統可用性

加快網站響應速度

消除并發通路高峰

7)備援:一定程度的伺服器備援運作、資料備援備份,可以在某台伺服器當機時将其上的服務和資料轉移到其他機器上,實作服務高可用。

8)自動化:通過減少人為幹預,是使釋出過程自動化可有效減少故障。包括自動化代碼管理、自動化測試、自動化安全檢測、自動化部署、自動化監控、自動化報警、自動化是小轉移、自動化失效恢複、自動化降級、自動化配置設定資源等

9)安全:身份驗證、加密、驗證碼、攻擊處理、資訊過濾、風險控制等