本文思維導圖:

分層
最常見的架構模式,將系統在橫向維度上切分成幾個部分,每個部分單一職責。網站一般分為三個層次:應用層、服務層和數據層,其具體結構如下圖所示:

通過分層,一個龐大系統切分成不同部分,便于分工合作和維護。
但是,分層架構也有一些挑戰:①必須合理規劃層次邊界和接口;②禁止跨層次的調用及逆向調用。
分割
分割是在縱向方面對軟件進行切分->將不同的功能和服務分割開來,包裝成高內聚低耦合的模塊單元,有助于軟件開發和維護,還便于不同模塊的分布式部署,提高網站的并發處理能力和功能擴展能力。
分布式
①分布式應用和服務:應用和服務模塊分布式部署,便于業務功能擴展;
②分布式靜態資源:JS、css、LOGO圖片等資源獨立部署,采用獨立域名->動靜分離;
③分布式數據和存儲:傳統RDBMS分布式部署和NoSQL產品;

④分布式計算:Hadoop及其MapReduce分布式計算框架,其特點是移動計算而不是移動數據。

集群
多臺服務器部署相同應用構成一個集群,通過負載均衡設備共同對外提供服務。當某臺服務器發生故障,負載均衡設備或者系統的失效轉移機制將請求轉發到集群中的其他服務器上,提高系統的可用性,即所謂的HA(高可用性)。

所以,在網站應用中,即使是訪問量很小的分布式應用和服務,也至少要部署兩臺服務器構成一個小集群。
緩存
緩存是改善軟件性能的第一手段。在復雜的軟件設計中,緩存幾乎無處不在,主要可以在以下幾個地方加緩存:
CDN:內容分發網絡,緩存網站的一些靜態資源;

反向代理:部署在網站的前端,最先訪問到的就是反向代理服務器;

本地緩存:在應用服務器本地緩存熱點數據,無需訪問數據庫;

分布式緩存:應用程序通過網絡通信訪問緩存數據;

網站應用中,緩存除了可以加快數據訪問速度,還可以減輕后端應用和數據存儲的負載壓力。
異步
業務之間的消息傳遞不是同步調用,而是將一個業務操作分成多個階段,每個階段之間通過共享數據的方式異步執行進行協作。
異步架構是典型的生產者消費者模式,兩者不存在直接調用,只要保持數據結構不變,彼此功能實現可以隨意變化而不互相影響,這對網站擴展新功能非常便利。

異步消息隊列可以提高系統可用性、加快網站響應速度,消除并發訪問高峰。
冗余
要想保證在服務器宕機的情況下網站依然可以繼續服務,不丟失數據,就需要一定程度的服務器冗余運行,數據冗余備份,這樣當某臺服務器宕機時,可以將其上的服務和數據訪問轉移到其他機器上。
數據庫除了定期備份存檔保存實現冷備份之外,為了保證在線業務高可用,還需要對數據庫進行主從分離,實時同步實現熱備份。

自動化
在無人值守的情況下,網站可以正常運行,一切都可以自動化是網站的理想狀態。目前大型網站的自動化架構設計主要集中在發布運維方面。
1:發布部署過程自動化;
2:自動化代碼管理;
3:自動化測試;
4:自動化安全監測。
安全

1:通過密碼和手機校驗碼進行身份驗證;
2:通過密碼和手機校驗碼進行身份驗證;
3:使用驗證碼進行識別;
4:對于常見的XSS攻擊、SQL注入、編碼轉換等進行防范;
5:對垃圾或敏感信息進行過濾;
6:對交易轉賬等操作進行風險控制;
總之,好的設計絕對不是模仿,不是生搬硬套某個模式,而是對問題深刻理解之上的創造與創新,即使是“微創新”,也是讓人耳目一新的似曾相識。