一、網站架構模式
在工作中,經常會遇到類似場景下不斷重複發生的問題,對于此類問題解決方案,我們經過抽象提取出來解決該類核心方案,即架構模式;
1.分層
面臨問題:系統耦合、不能更細粒度獨立部署擴充為分布式叢集提高并發和功能擴充、不能更有效的拆分工作開發維護、不利于公共服務及資源複用
優點:系統切分之後便于分工開發維護、友善獨立部署後期可以擴充分布式、軟體邏輯結構清晰
實踐方式:類似于MVC模式,将整體應用分為三層應用層 、服務層、資料層,也根據實際情況再可以針對分層進行更細粒度拆分;
2.分割
面臨問題:系統耦合整體龐大、不利于開發維護、不利于分布式擴充并發和功能擴充
優點:系統分割之後便于分工開發維護、友善獨立部署後期可以擴充分布式、軟體邏輯結構清晰
實踐方式:可以根據需要,選擇分割粒度,分割方式主要為按照業務線或者功能子產品;
3.分布式
面臨問題:高并發通路、單節點故障、單節點性能提升成本效益不高且有性能上線
缺點:分布式網絡調用會有性能損耗、伺服器多開發維護成本高、當機機率高、分布式資料一緻性問題
實踐方式:分布式應用和服務(核心服務抽離複用)、分布式靜态資源(獨立域名通路靜态資源)、分布式資料和存儲(nosql資料庫産品)、分布式計算、分布式配置、分布式鎖、分布式檔案
4.叢集
面臨問題:單機性能有上限、單機性能可用性比較低、并發量低、處理能力有限
實踐方式:伺服器叢集化對外提供通路時候,通過負載均衡裝置提供服務
5.緩存
面臨問題:性能得不到滿足(緩存是提高系統性能第一手段)
實踐方式:CDN緩存靜态資源、反向代理緩存、本地緩存、分布式緩存
6.異步
面臨問題:系統高度耦合、不利于後續功能擴充、實時系統高并發情況可用性不足、網站響應慢、有并發通路高峰
實踐方式:異步消息通知解耦系統RocketMq、RabbitMq等
7.備援
面臨問題:伺服器總是可能會不可使用、資料總是可能會存在安全問題
實踐方式:服務要叢集提供服務、資料要做備援備份
8.自動化
面臨問題:部署釋出減少人工介入造成錯誤、需要自動監控系統、系統自動容錯失效轉移等
實踐方式:釋出過程自動化、自動化代碼管理、自動化測試、自動化安全檢測、自動化部署、自動化監控、自動化報警、自動化失效轉移、自動化失效恢複、自動化降級、自動化配置設定資源
9.安全
面臨問題:安全問題一直存在,xss、csrf、sql注入
實踐方式:密碼、驗證碼、防火牆、加密、過濾、特殊字元編碼轉碼、sql綁定參數(
#
方式能夠很大程度防止sql注入)、交易業務風險控制(規則引擎或統計模型控制)