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