架構模式
先來說說模式: 每一個模式描述了一個在我們周圍不斷重復發(fā)生的問題及該問題解決方案的核心。這樣,你就能一次又一次地用該方案而不必做重復工作 。
先來說說常見的網(wǎng)站架構模式。這里沒有涉及具體實現(xiàn)過程,只是簡單介紹其思想和原理,方便日后有用到再深入了解。
分層
分層是企業(yè)應用系統(tǒng)中最常見的一種架構模式,將系統(tǒng)在 橫向維度 上切分成幾個部分,每個部分負責一部分相對比較單一的職責,然后 通過上層對下層的依賴和調(diào)用 組成一個完整的系統(tǒng)。
分層結構對網(wǎng)站支持高并發(fā)向分布式發(fā)展至關重要,所以 在網(wǎng)站規(guī)模很小的時候就應該采用分層的架構,這樣將來網(wǎng)站做大時才能有更好地應對 。
所以說我們在設計一個新項目的架構時,就需要考慮到分層。不能等到日后項目做大了,再重構就耗時耗力了。
分割
上面的分層是將軟件在橫向方面進行切分,而分割是在 縱向方面 對軟件進行切分。 將不同的功能和服務分割開來,包裝成高內(nèi)聚低耦合的模塊單元 。
比如在應用層,將購物、論壇、搜索、廣告分割成不同的應用,由獨立的團隊負責,部署在不同的服務器上;
在同一個應用內(nèi)部,如果規(guī)模龐大業(yè)務負責,會繼續(xù)進行分割,比如說購物業(yè)務,可以分割為機票酒店業(yè)務、3C業(yè)務、小商品業(yè)務等更細小的粒度。
分布式
對于大型網(wǎng)站, 分層和分割的主要目的是為了切分后的模塊便于分布式部署 。
利用分布式解決網(wǎng)站高并發(fā)的問題的同時,會帶來其他問題:
分布式意味著服務調(diào)用必須通過網(wǎng)絡,這可能對性能造成比較嚴重的影響;
常用的分布式方案有以下幾種:
分布式應用和服務:將分層和分割后的應用和服務模塊分布式部署,使不同應用復用共同的服務,便于業(yè)務功能擴展。
分布式靜態(tài)資源:網(wǎng)站的靜態(tài)資源如js、css、圖片等獨立分布式部署,并采用獨立的域名。減輕應用服務器的負載壓力,并通過獨立域名加快瀏覽器并發(fā)加載速度。
分布式數(shù)據(jù)和存儲:數(shù)據(jù)量過大,一臺機器無法存儲。
分布式計算:后臺業(yè)務需要處理,包括搜索引擎的索引構建、數(shù)據(jù)倉庫的數(shù)據(jù)分析統(tǒng)計。通過Hadoop及MapReduce分布式計算框架進行批處理計算
集群
使用分布式已經(jīng)將切分后的模塊獨立部署,但是 對于用戶訪問集中的模塊,還需要將獨立部署的服務器集群化 ,多臺服務器部署相同應用構成一個集群,通過負載均衡設備共同對外提供服務。
即使是訪問量很小的分布式應用和服務,也會部署兩臺服務器構成一個小的集群,目的就是 提高系統(tǒng)的可用性 。