漫談《大型網站技術架構》

轉載請標明出處:
http://blog.csdn.net/forezp/article/details/69196483
本文出自方誌朋的博客css

本文的內容來自阿里巴巴員工李智慧的著做《大型網站技術架構 核心原理與案例分析》,這本書很值得一看,故整理之。html

1、大型網站的架構演化

1.1 大型網站軟件的特色

  • 高併發、大流量
  • 高可用:系統7*24小時不間斷提供服務
  • 海量數據
  • 用戶分佈普遍
  • 安全環境惡劣
  • 需求變動快,發佈頻繁
  • 漸進式發展

1.2 大型網站架構演化發展歷程

  • **初始階段的網站架構:**例如 LAMP 架構
  • **應用和數據服務分離:**三臺服務器:應用服務器,文件服務器和數據庫服務器
  • **使用緩存改善網站性能:**分爲兩種,緩存在應用服務器上的本地緩存和緩存在專門的分佈式緩存服務器的遠程緩存
  • **使用應用服務器集羣改善網站併發處理能力:**經過負載均衡調度服務器來分發請求到應用服務器集羣中的任何一臺機器
  • 數據庫讀寫分離: 主寫從讀。
  • **使用反向代理和 CDN 加速網站響應:**這二者基本原理都是緩存。反向代理部署在網站的中心機房,CDN 部署在網絡提供商的機房。
  • 使用分佈式文件系統和分佈式數據庫系統: 將不一樣的業務分佈,將不一樣的業務的數據庫部署在不一樣的機器上。
  • 使用 NoSQL 和搜索引擎: 源自互聯網技術,對可伸縮的分佈式有更好的支持。
  • **業務拆分:**將整個網站經過分而治之的手段將網站業務分紅不一樣的產品線。
  • 分佈式服務: 好比最近流行的微服務,橫行、縱向切片,將服務集羣化,相互關聯化。

架構設計_分佈式服務.png

1.3 大型網站架構演化的價值觀

  • 大型網站架構的核心價值是隨網站所需靈活應對
  • 驅動大型網站技術發展的主要力量是網站的業務發展

1.4 網站架構設計誤區

  • 一味追隨大公司的解決方案
  • 爲了技術而技術
  • 企圖用技術解決全部問題

2、大型網站架構模式

2.1 網站架構模式

  • 分層
  • 分割
  • 分佈式
    • 分佈式應用和服務
    • 分佈式靜態資源
    • 分佈式數據和存儲
    • 分佈式計算
  • 集羣
  • 緩存
    • Cdn
    • 反向代理
    • 本地緩存
    • 分佈式緩存
  • 異步
    • 提供系統可用性
    • 加快網站響應速度
    • 消除高併發訪問高峯
  • 冗餘 服務器冗餘運行,數據庫冗餘備份
  • 自動化
  • 安全 : 防止XSS攻擊、sql注入

3、大型網站核心架構要素

  • 性能
  • 可用性
  • 伸縮性 不斷地向服務器集羣加服務器
  • 擴張性

4、瞬時響應:網站的高性能架構

4.1 網站性能測試

  • 不一樣視角下網站的性能
    • 用戶視角網站性能 響應時間
    • 開發人員視角的網站性能 響應時間、併發亮
    • 運維人員視角的網站性能 資源
  • 性能測試指標
    • 響應時間
    • 併發數
    • 吞吐量 qps tps hps
    • 性能計數器
  • 性能測試方法
    • 性能測試
    • 負載測試
    • 壓力測試
    • 穩定性測試
  • 性能測試報告
  • 性能優化策略
    • 性能分析
    • 性能優化

4.2 web前端性能優化

  • 瀏覽器訪問優化
    • 減小http請求
    • 使用瀏覽器緩存
    • 啓用壓縮
    • css放在網頁最上面 js最下面
    • 減小cookie傳輸
  • CDN加速。(content distribute network)
  • 反向代理

4.3 應用服務器性能優化

  • 分佈式緩存
    • 緩存的基本原理
    • 合理的使用緩存
      • 頻繁修改數據
      • 沒有熱點的訪問
      • 數據不一致與髒讀
      • 緩存可用性
      • 緩存預熱
      • 緩存穿透 緩存不存在,直接訪問數據庫
    • 分佈式緩存架構
    • Memcached
  • 異步操做
  • 使用集羣
  • 代碼優化
    • 多線程
    • 資源複用
    • 數據結構
    • 垃圾回收

4.4 存儲性能優化

  • 機械硬盤 vs. 固態硬盤
  • B+ 樹 vs. LSM 樹
  • RAID vs. HDFS

5、萬無一失:網站的高可用架構

5.1 網站可用性的度量和考覈

  • 網站可行性度量
  • 網站可用性考覈

5.2 高可用的網站架構

5.3 高可用的應用

  • 經過負載均衡進行無狀態服務的失效轉移
  • 應用服務器集羣的session管理
    • session複製
    • session綁定
    • 利用cookie記錄 session
    • session服務器

5.4 高可用的應用

  • 分級管理
  • 超時設置
  • 異步調用
  • 服務降級 隨機拒絕訪問(twitter)
  • 冪等性設計

5.5 高可用的數據

  • CAP原理
    • 數據持久性
    • 數據可訪問性
    • 數據一致性
      • 數據強一致性
      • 數據用戶一致性
      • 數據最終一致性
  • 數據備份
  • 失效轉移
    • 失效確認
    • 訪問轉移
    • 數據恢復

5.6 高可用軟件質量保障

  • 網站發佈
  • 自動化測試
  • 預發佈驗證
  • 代碼控制
    • 主幹開發,分支發佈
    • 分支開發,主幹發佈
  • 自動化發佈
  • 灰度發佈

5.7 網站運行監控

  • 監控數據採集
    • 用戶行爲日誌收集
    • 服務器性能檢測
    • 運行數據報告
  • 監控管理
    • 系統報警
    • 失效轉移
    • 自動優雅降級

6、永無止盡:網站的伸縮性架構

6.1 網站伸縮性設計

  • 不一樣功能進行物理分離實現伸縮
  • 單一功能經過集羣實現伸縮

6.2 應用服務器集羣伸縮設計

  • http重定向負載均衡
  • Dns域名解析負載均衡
  • 反向代理負載均衡
  • ip負載均衡
  • 數據鏈路層負載均衡
  • 負載均衡算法
    • 輪詢
    • 加權輪詢
    • 隨機
    • 最少連接
    • 原地址散列

6.3 分佈式緩存集羣的伸縮性設計

  • Memcached分佈式緩存集羣的訪問模型
  • Memcached分佈式緩存集羣的伸縮性挑戰
  • 分佈式緩存的一致性hash算法

6.4 數據存儲服務器集羣的伸縮性設計

  • 關係數據庫集羣的伸縮性設計
  • Nosql數據庫的伸縮性設計

7、隨機應變:網站的可擴展性架構

7.1 構建可擴展性的網站架構

7.2 利用分佈式消息隊列下降系統耦合性

  • 事件驅動架構
  • 分佈式消息隊列

7.3 利用分佈式服務打造可複用的業務平臺

  • web service與企業級分佈式服務
  • 大型網站分佈式服務的需求與特色
    • 負載均衡
    • 失效轉移
    • 高效的遠程通訊
    • 整合異構系統
    • 對應用最少侵入
    • 版本控制
    • 實時監控
  • 分佈式服務框架設計

7.4 可擴展的數據結構

7.5 利用開放平臺建設網站生態圈

  • api接口
  • 協議轉移
  • 安全
  • 審計
  • 路由
  • 流程

八、固若金湯:網站的安全架構

8.1 道高一尺魔高一丈的網站應用攻擊與防護

  • xss攻擊
    • 消毒
    • httponly
  • 注入攻擊
    • 開源
    • 錯誤回顯
    • 盲注
    • 消毒
    • 參數綁定
  • csrf攻擊
    • 表單token
    • 驗證碼
    • referer check
  • 其餘攻擊和漏洞
    • error code
    • html註釋
    • 文件上傳
    • 路徑遍歷
  • web應用防火牆
  • 網站安全漏洞掃描

8.2 信息加密技術及密鑰安全管理

  • 單向散列加密
  • 對稱加密
  • 非對稱加密
  • 密鑰安全管理

8.3 信息過濾與反垃圾

  • 文本匹配
  • 分類算法
  • 黑名單

8.4 電子商務風險控制

  • 風險
    • 帳號風險
    • 買家風險
    • 賣家風險
    • 交易風險
  • 風控
    • 規則引擎
    • 統計模型


掃碼關注公衆號有驚喜 前端

(轉載本站文章請註明做者和出處 方誌朋的博客 web

相關文章
相關標籤/搜索