分佈式架構-設計模式

本文是 《大型網站技術架構:核心原理與案例分析》的學習和記錄css

// 前言sql

若是是看過概述了,那麼主要須要看異步、安全和自動化部分緩存

模式是可複用的解決方案安全

分佈式架構總共用到 分層、分割、分佈式、集羣、緩存、異步、備份、自動化和安全幾種模式服務器

一、分層網絡

分層是將服務器的處理邏輯分紅多層,如你們熟知的將服務器分紅控制器,服務層和dao數據層多線程

二、分割架構

分割是將能夠互相解耦的業務分紅不一樣的子系統去操做,好比將購物,付款,訂單,推廣,客服等分紅不一樣的子系統去由不一樣的團隊維護。併發

三、分佈式負載均衡

分佈式的解釋概述裏講過,分佈式採用增長服務器,分解業務過程的方法去提升性能,可是有一個缺點就是業務之間交互都須要以網絡的形式,多服務器網絡交互確定是比單服務器內存交互要慢的多的,另外因爲分佈式部署雖然互相業務依賴性不強可是某臺服務器宕機也可能會致使其餘服務器不可用。

分佈式主要有分佈式應用和服務,分佈式靜態資源(將圖片js,css,logo等部署獨立服務器,採用獨立域名,減輕應用服務器壓力),分佈式數據和存儲(將數據分佈式存放),分佈式計算(如搜索引擎,大量數據的分析統計,這些計算規模大,一般使用hadoop或者mapReduce分佈式計算框架進行處理和計算),配置實時更新的分佈式配置,實現併發和協同的分佈式鎖和雲存儲的分佈式文件等。

四、集羣

分佈式是將一個處理邏輯分紅多個部分,而集羣是將訪問比較集中的模塊(如首頁淘寶首頁)集羣化,即多個服務器部署相同應用,經過負載均衡去訪問。在小的應用中能夠部署兩臺服務器做爲集羣,這是爲了防止一臺服務器不可用的狀況下系統能夠正常運行,提升系統的可用性。

五、緩存

緩存是將經常使用的數據放在獲取速度更快的地方,一方面能夠提升數據訪問速度,另外一方面能夠減輕數據訪問壓力和應用處理壓力,常見的有cdn,反向代理,本地緩存,分佈式緩存。

六、異步

異步的操做是指在將業務分紅多層的過程當中,之間信息交互並不直接交互,而是經過使用生產者-消費者模式去交互,生產者將數據產生好後放置在分部署消息隊列中嗎,由消費者去取而後執行,兩者不直接作信息交互。在多線程開發中,生產者也是在生產數據後將數據存放在共享內存中,由消費者去取。

異步模式有以下好處:

提升可用性:若是消費者宕機了,數據只會堆積在消息隊列,生產者能夠繼續正常運行。

加快響應速度:生產者將數據交給消息隊列後不須要等消費者處理完成 就能夠將結果返回給用戶,用戶不須要等待消費者的處理過程所花費的時間。

消除併發高峯:如雙十一,準點搶等活動會在某個時間節點訪問量忽然增多,若是都交付給服務器處理可能會致使宕機,若是這裏將消息存儲在消息隊列則能夠避免宕機。

異步處理須要業務流程的支持,即消費者的處理能保證是對生產者對用戶的響應沒有影響。

七、備份

主要是數據備份和服務器集羣備份,包括數據按期備份,存檔保存等冷備份和主從分離的熱備份發。

八、自動化

包括

發佈自動化:減小人爲干預,減小發布過程當中人爲故障。

代碼管理自動化:使用版本控制工具。

自動化測試:代碼提交後自動部署到測試環境,自動化測試根據測試用例對上線的功能進行測試。

自動化安全測試:自動模擬攻擊

自動化部署:部署上線

自動化監控:監控線上生產環境

九、安全

主要是隱私信息加密,防止sql注入和xss攻擊