1、分層前端
最多見的架構模式,將系統在橫向維度上切分紅幾個部分,每一個部分單一職責。網站通常分爲三個層次:應用層、服務層和數據層,其具體結構以下圖所示:數據庫
經過分層,一個龐大系統切分紅不一樣部分,便於分工合做和維護。後端
可是,分層架構也有一些挑戰:①必須合理規劃層次邊界和接口;②禁止跨層次的調用及逆向調用。緩存
分割是在縱向方面對軟件進行切分->將不一樣的功能和服務分割開來,包裝成高內聚低耦合的模塊單元,有助於軟件開發和維護,還便於不一樣模塊的分佈式部署,提升網站的併發處理能力和功能擴展能力安全
①分佈式應用和服務:應用和服務模塊分佈式部署,便於業務功能擴展;服務器
②分佈式靜態資源:JS、CSS、LOGO圖片等資源獨立部署,採用獨立域名->動靜分離;網絡
③分佈式數據和存儲:傳統RDBMS分佈式部署和NoSQL產品;數據結構
④分佈式計算:Hadoop及其MapReduce分佈式計算框架,其特色是移動計算而不是移動數據。架構
多臺服務器部署相通應用構成一個集羣,經過負載均衡設備共同對外提供服務。當某臺服務器發生故障,負載均衡設備或者系統的失效轉移機制將請求轉發到集羣中的其餘服務器上,提升系統的可用性,即所謂的HA(高可用性)。併發
因此,在網站應用中,即便是訪問量很小的分佈式應用和服務,也至少要部署兩臺服務器構成一個小集羣。
緩存是改善軟件性能的第一手段。在複雜的軟件設計中,緩存幾乎無處不在。
①CDN:內容分發網絡,緩存網站的一些靜態資源;
②反向代理:部署在網站的前端,最早訪問到的就是反向代理服務器;
③本地緩存:在應用服務器本地緩存熱點數據,無需訪問數據庫;
④分佈式緩存:應用程序經過網絡通訊訪問緩存數據;
網站應用中,緩存除了能夠加快數據訪問速度,還能夠減輕後端應用和數據存儲的負載壓力。
業務之間的消息傳遞不是同步調用,而是將一個業務操做分紅多個階段,每一個階段之間經過共享數據的方式異步執行進行協做。
異步架構是典型的生產者消費者模式,二者不存在直接調用,只要保持數據結構不變,彼此功能實現能夠隨意變化而不互相影響,這對網站擴展新功能很是便利。
異步消息隊列能夠提升系統可用性、加快網站響應速度,消除併發訪問高峯。
要想保證在服務器宕機的狀況下網站依然能夠繼續服務,不丟失數據,就須要必定程度的服務器冗餘運行,數據冗餘備份,這樣當某臺服務器宕機時,能夠將其上的服務和數據訪問轉移到其餘機器上。
數據庫除了按期備份存檔保存實現冷備份以外,爲了保證在線業務高可用,還須要對數據庫進行主從分離,實時同步實現熱備份。
在無人值守的狀況下,網站能夠正常運行,一切均可以自動化是網站的理想狀態。目前大型網站的自動化架構設計主要集中在發佈運維方面。
①發佈部署過程自動化;
②自動化代碼管理;
③自動化測試;
④自動化安全監測;
①經過密碼和手機校驗碼進行身份驗證;
②對登陸、交易等操做進行加密;
③使用驗證碼進行識別;
④對於常見的XSS攻擊、SQL注入、編碼轉換等進行防範;
⑤對垃圾或敏感信息進行過濾;
⑥對交易轉帳等操做進行風險控制;
思惟導圖
第三代架構
PV是在10億級別,QPS在百萬,數據量在千億級別
數據量,bigger and bigger,用戶體驗是faster and faster,業務是more and more
一個 維 度 是 水平的 分層 拆分,第二從垂直的維度會作拆分。水平的維度從接口層、到服務層到數據存儲層。垂直怎麼拆分,會用業務架構、技術架構、監控平臺、服務治理等等來處理。
緩存、DB相關的各種組件,好比Cache組件和對象庫組件。監 控平臺和服 務 治理
分佈式系統作提早診斷、預警以及治理。
SLA規則的制定、服務監控、服務調用鏈監控、流量監控、錯誤異常監控、線上灰度發佈上線系統、線上擴容縮容調度系統
系統架構三個利器: RPC 服 務組 件 、消息中 間 件、配置管理
數據層:存儲、壓縮、索引
接口層組件(HTTP Client、HTTP Server)至到服務層組件(RPC Client、RPC Server)
少許的配置信息就能夠實現全鏈路監控
Web系統架構
1)Web前端系統
2)負載均衡系統
3)數據庫集羣系統
4)緩存系統
5)分佈式存儲系統
6)分佈式服務器管理系統