大型網站架構演化之路
阿新 • • 發佈:2019-01-27
一、服務進化之路
單伺服器階段
應用程式、資料庫、檔案都在一臺伺服器上。
應用服務與資料服務分離
應用程式、資料庫、檔案分別部署在不同的伺服器上。
引入快取緩解資料庫訪問壓力
使用應用伺服器叢集提高併發處理能力
資料庫讀寫分離
緩解資料庫訪問壓力
使用反向代理和CDN加速網站響應
使用分散式檔案系統和分散式資料庫系統
使用NoSQL和搜尋引擎
業務拆分
分散式服務
二、名詞解釋
分層
將系統進行橫向分割,例如:分為資料層、服務層、應用層。
分割
對系統進行縱向分割,按照功能切分。
分散式
分層於分割其目的之一就是便於分散式部署,將不同的模組部署到不同的機器上,通過遠端呼叫協同工作。
叢集
多臺機器部署相同的模組,再利用負載均衡來對外提供服務。
快取
概念:將資料放在距離計算最近的位置以加快處理速度。
– CDN:在距離使用者最近的網路服務商處部署資源。因為使用者的請求都>是首先到最近的網路服務商處。–反向代理:在網站的前端部署靜態資源,使用者請求過來直接在前端獲取靜態資源,不需要繼續轉發給應用伺服器。
–本地快取:應用伺服器本地快取著熱點資料,無需訪問資料庫。
–分散式快取:本地快取往往無法提供足夠空間,因此需要獨立的分散式模組。
(快取的條件:資料訪問熱點不均勻、資料有合適的有效期)
非同步
生產者於消費者模式,各業務之間的呼叫不是同步的,而是將一個業務操作分為多個階段,每個階段之間通過共享資料的方式非同步執行進行協調。
優點:
– 提高系統可用性。消費者故障,生產者還是可以向訊息佇列中生產資料。
– 大家加響應速度。生產者處理完,不需要等待消費者及時響應。
– 消除併發訪問高峰。可以將猛增的請求資料放入訊息佇列中,等待消費者以此處理。
冗餘
實現服務高可用,防災。
自動化
自動化釋出:自動化程式碼管理、自動化測試、自動化安全檢測、自動化部署。
執行中:自動化監控、自動化報警、自動化失效轉移、自動化失效恢復、自動化降級(拒絕部分請求將負載降低到一個安全水平)、自動化資源分配。
安全
密碼、手機檢驗碼、驗證碼、過濾敏感資訊。