第二章 大型網站架構模式
- 網站架構模式
- 分層
- 橫向次元切分:應用層、服務層、資料層
- 單一職責,上下層依賴調用,分層限制(禁止跨層和逆向調用)
- 分割
- 縱向次元切分:根據業務子產品劃分
- 高内聚,低耦合
- 分布式
- 分布式應用和服務(複用服務)
- 分布式靜态資源(動靜分離,如JS, CSS, Logo圖檔等資源)
- 分布式資料和存儲(傳統關系資料庫和NoSQL産品)
- 分布式計算(移動計算而不是移動資料,如Hadoop及其MapReduce)
- 分布式配置(網站線上伺服器配置實時更新)
- 分布式鎖(分布式環境下實作并發和協同)
- 分布式檔案(基于雲存儲)
- 叢集
- 多台伺服器部署相同應用構成叢集(至少兩台,提高可用性)
- 負載均衡裝置共同對外提供服務
- 緩存
- CDN(内容分發網絡)
- 網絡服務商處
- 緩存靜态資源和較少變化且通路量大的資料
- 未經過應用伺服器
- 反向代理
- 網站前端架構的一部分
- 緩存靜态資源
- 未經過應用伺服器
- 本地緩存
- 應用伺服器本地
- 緩存熱點資料
- 應用伺服器直接通路
- 分布式緩存
- 分布式緩存叢集中
- 緩存量大
- 應用伺服器通過網絡通信通路
- 緩存的兩個前提條件
- 資料通路熱點不均衡
- 資料具有一定的時效性
- 緩存的好處
- 加快資料通路速度
- 減輕後端應用和資料存儲的負載壓力
- CDN(内容分發網絡)
- 異步
- 單一伺服器内部多線程共享記憶體隊列
- 分布式系統中多個伺服器叢集使用分布式消息隊列(記憶體隊列的分布式部署)
- 典型的生産者消費者模式
- 好處
- 提高系統可用性
- 加快網站響應速度
- 消除并發通路高峰
- 注意
- 可能對使用者體驗、業務流程造成影響
- 備援
- 資料庫冷備份
- 資料庫熱備份(主從分離同步)
- 災備資料中心
- 自動化
- 釋出過程自動化
- 自動化代碼管理(版本控制、分支建立合并)
- 自動化測試(測試、報告、回報)
- 自動化安全檢測(靜态代碼、運作攻擊)
- 自動化部署
- 自動化監控
- 自動化報警(關鍵資料名額異常)
- 自動化失效轉移(隔離失效伺服器)
- 自動化失效恢複(重新開機失效伺服器并同步資料保證資料一緻性)
- 自動化降級(拒絕部分請求、關閉不重要的服務)
- 自動化配置設定資源(空閑資源配置設定)
- 釋出過程自動化
- 安全
- 密碼和手機校驗碼(身份認證)
- 加密(敏感資料)
- 驗證碼(機器人程式)
- 過濾(垃圾資訊、敏感資訊)
- 風險控制(重要操作)
- 分層