此篇已收錄至《大型網站技術架構》讀書筆記系列目錄貼,點擊訪問該目錄可獲取更多內容。html
最多見的架構模式,將系統在橫向維度上切分紅幾個部分,每一個部分單一職責。網站通常分爲三個層次:應用層、服務層和數據層,其具體結構以下圖所示:前端
經過分層,一個龐大系統切分紅不一樣部分,便於分工合做和維護。數據庫
可是,分層架構也有一些挑戰:①必須合理規劃層次邊界和接口;②禁止跨層次的調用及逆向調用。後端
分割是在縱向方面對軟件進行切分->將不一樣的功能和服務分割開來,包裝成高內聚低耦合的模塊單元,有助於軟件開發和維護,還便於不一樣模塊的分佈式部署,提升網站的併發處理能力和功能擴展能力。緩存
①分佈式應用和服務:應用和服務模塊分佈式部署,便於業務功能擴展;安全
②分佈式靜態資源:JS、CSS、LOGO圖片等資源獨立部署,採用獨立域名->動靜分離;服務器
③分佈式數據和存儲:傳統RDBMS分佈式部署和NoSQL產品;網絡
④分佈式計算:Hadoop及其MapReduce分佈式計算框架,其特色是移動計算而不是移動數據。數據結構
多臺服務器部署相同應用構成一個集羣,經過負載均衡設備共同對外提供服務。當某臺服務器發生故障,負載均衡設備或者系統的失效轉移機制將請求轉發到集羣中的其餘服務器上,提升系統的可用性,即所謂的HA(高可用性)。架構
因此,在網站應用中,即便是訪問量很小的分佈式應用和服務,也至少要部署兩臺服務器構成一個小集羣。
緩存是改善軟件性能的第一手段。在複雜的軟件設計中,緩存幾乎無處不在。
①CDN:內容分發網絡,緩存網站的一些靜態資源;
②反向代理:部署在網站的前端,最早訪問到的就是反向代理服務器;
③本地緩存:在應用服務器本地緩存熱點數據,無需訪問數據庫;
④分佈式緩存:應用程序經過網絡通訊訪問緩存數據;
網站應用中,緩存除了能夠加快數據訪問速度,還能夠減輕後端應用和數據存儲的負載壓力。
業務之間的消息傳遞不是同步調用,而是將一個業務操做分紅多個階段,每一個階段之間經過共享數據的方式異步執行進行協做。
異步架構是典型的生產者消費者模式,二者不存在直接調用,只要保持數據結構不變,彼此功能實現能夠隨意變化而不互相影響,這對網站擴展新功能很是便利。
異步消息隊列能夠提升系統可用性、加快網站響應速度,消除併發訪問高峯。
要想保證在服務器宕機的狀況下網站依然能夠繼續服務,不丟失數據,就須要必定程度的服務器冗餘運行,數據冗餘備份,這樣當某臺服務器宕機時,能夠將其上的服務和數據訪問轉移到其餘機器上。
數據庫除了按期備份存檔保存實現冷備份以外,爲了保證在線業務高可用,還須要對數據庫進行主從分離,實時同步實現熱備份。
在無人值守的狀況下,網站能夠正常運行,一切均可以自動化是網站的理想狀態。目前大型網站的自動化架構設計主要集中在發佈運維方面。
①發佈部署過程自動化;
②自動化代碼管理;
③自動化測試;
④自動化安全監測;
①經過密碼和手機校驗碼進行身份驗證;
②對登陸、交易等操做進行加密;
③使用驗證碼進行識別;
④對於常見的XSS攻擊、SQL注入、編碼轉換等進行防範;
⑤對垃圾或敏感信息進行過濾;
⑥對交易轉帳等操做進行風險控制;
好的設計絕對不是模仿,不是生搬硬套某個模式,而是對問題深入理解之上的創造與創新,即便是「微創新」,也是讓人耳目一新的似曾相識。山寨與創新的最大區別不在因而否抄襲,是否模仿,而在於對問題和需求是否真正理解與把握。