高併發挑戰的兩個方法
垂直伸縮
垂直伸縮是指提升單臺服務器硬件,不需要改變系統軟件架構。
缺點
當硬件提升到一定程度之後,提升的性能和價格性價比不高
水平伸縮
水平伸縮是指增加服務器,將系統由單機擴展爲集羣,以此來獲取性能提升。
缺點
初期需要投入較多的人力來實現系統的集羣。
架構演化
第零階段
單機部署應用程序,文件服務器和數據庫,如下圖:
第一階段
當發現單臺的網絡帶寬,CPU,IO不足時,可以將文件服務器和數據庫獨立部署,如下圖
第二階段
當發現請求頻繁的訪問數據庫,導致響應偏慢,可以考慮增加緩存組件,如下圖:
第三階段
當請求併發到一定程度,發現單臺應用服務器無法支撐時,需要考慮應用服務器集羣,如下圖
第四階段
應用服務器支持高併發,有可能數據庫的連接數不夠或者響應跟不上,導致請求耗時過長,可以考慮對數據庫進行讀寫分離(通過第三方組件自動實現讀寫分離),如下圖
第五階段
當發現文件服務器的帶寬不夠用時,可以考慮CDN加速,如下圖:
第六階段
當讀寫分離之後,數據庫還是無法支持高併發,考慮將數據庫進行集羣,如下圖:
第七階段
引入noSQL和搜索引擎,如下圖:
第八階段
將業務拆分,也就是微服務。如下圖:
第九階段
引入數據中臺(參考知乎:https://zhuanlan.zhihu.com/p/75223466),如下圖:
架構模式
分層
將系統分持久層,業務邏輯層,控制層等
分割
將不同功能進行分割,例如可以將用戶管理分割成單獨的功能
分佈式
將一個大的系統拆分成幾個子系統
集羣
對系統進行集羣部署
緩存
- CDN
- 反向代理:將請求轉發到內部服務器
- 本地緩存:客戶端緩存
- 遠程緩存:服務端緩存
異步
將一個業務複雜的邏輯分成多個異步執行。可以提供系統可用性,加快響應速度,消除併發訪問高峯(削峯)
冗餘
服務器冗餘,數據冗餘備份
自動化
例如自動重啓
安全
- 加密協議
- 加密存儲
- 網站驗證碼訪問
- 敏感信息過濾
衡量架構設計的指標
高性能
快速響應
高可用
宅備
可伸縮
集羣
可擴展
系統的擴展性