大型網站技術架構-入門梳理【轉】

來源:互聯網
上載者:User

標籤:透明   快取服務器   archive   分散式運算   參數   raid   規模   高可用   代理   

羅列了大型網站架構涉及到的概念,附上了簡單說明

前言
  • 本文是對《大型網站架構設計》(李智慧 著)一書的梳理,類似文字版的“思維導圖”
  • 全文主要圍繞“效能,可用性,伸縮性,擴充性,安全”這五個要素
  • 效能,可用性,伸縮性這幾個要素基本都涉及到應用伺服器,快取服務器,儲存伺服器這幾個方面
概述
  • 三個緯度:演化、模式、要素
  • 五個要素: 效能,可用性,伸縮性,擴充性,安全
演化曆程

圖例可參考 大型網站架構演化曆程:

  1. 初始階段的網站架構:一台伺服器,上面同時擁有應用程式,資料庫,檔案,等所有資源。例如 LAMP 架構
  2. 應用和資料服務分離:三台伺服器(硬體資源各不相同),分別是應用伺服器,檔案伺服器和資料庫伺服器
  3. 使用緩衝改善網站效能:分為兩種,緩衝在應用伺服器上的本機快取和緩衝在專門的分布式快取服務器的遠程緩衝
  4. 使用應用伺服器叢集改善網站並發處理能力:通過負載平衡調度伺服器來將訪問請求分發到應用伺服器叢集中的任何一台機器
  5. 資料庫讀寫分離:資料庫採用主從熱備,應用伺服器在寫資料時訪問主要資料庫,主要資料庫通過主從複製機制將資料更新同步到從資料庫。應用伺服器使用專門的資料訪問模組從而對應用透明
  6. 使用反向 Proxy和 CDN 加速網站響應:這兩者基本原理都是緩衝。反向 Proxy部署在網站的中心機房,CDN 部署在網路供應商的機房
  7. 使用Distributed File System和分散式資料庫系統:資料庫拆分的最後手段,更常用的是業務分庫
  8. 使用 NoSQL 和搜尋引擎:對可伸縮的分布式有更好的支援
  9. 業務拆分:將整個網站業務拆分成不同的應用,每個應用獨立部署維護,應用之間通過超連結建立聯絡/訊息佇列進行資料分發/訪問同一資料存放區系統
  10. 分布式服務:公用業務提取出來獨立部署

演化的價值觀

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

誤區

  • 一味追隨大公司的解決方案
  • 為了技術而技術
  • 企圖用技術解決所有問題
架構模式

模式的關鍵在於模式的可重複性

  • 分層:橫向切分
  • 分割:縱向切分
  • 分布式:分層和分割的主要目的是為了切分後的模組便於分布式部署。常用方案:
    • 分布式應用和服務
    • 分布式靜態資源
    • 分布式資料和儲存
    • 分散式運算
    • 分布式配置,分布式鎖,分布式檔案,等等
  • 叢集:多台伺服器部署相同的應用構成一個叢集,通過負載平衡裝置共同對外提供服務
  • 緩衝:將資料放距離計算最近的位置加快處理速度,改善效能第一手段,可以加快訪問速度,減小後端負載壓力。使用緩衝 兩個前提條件 :1.資料訪問熱點不均衡;2.資料某時段內有效,不會很快到期
    • CDN
    • 反向 Proxy
    • 本機快取
    • 分布式緩衝
  • 非同步:旨在系統解耦。非同步架構是典型的消費者生產者模式,特性如下:
    • 提高系統可用性
    • 加快網站訪問速度
    • 消除並發訪問高峰
  • 冗餘:實現高可用。資料庫的冷備份和熱備份
  • 自動化:包括髮布過程自動化,自動化代碼管理,自動化測試,自動化安全檢測,自動化部署,自動化監控,自動化警示,自動化失效轉移,自動化失效恢複,自動化降級,自動化分配資源
  • 安全:密碼,手機校正碼,加密,驗證碼,過濾,風險控制
核心要素

架構是“最高層次的規劃,難以改變的規定”。主要關注五個要素:

  • 效能
  • 可用性(Availability)
  • 伸縮性(Scalability)
  • 擴充性(Extensibility)
  • 安全性
架構

下面依次對這五個要素進行歸納

高效能

效能的測試單位主要有:

  • 回應時間:指應用執行一個操作需要的時間
  • 並發數:指系統能夠同時處理請求的數目
  • 輸送量:指單位時間內系統處理的請求數量
  • 效能計數器:描述伺服器或者作業系統效能的一些資料指標

效能測試方法:

  • 效能測試
  • 負載測試
  • 壓力測試
  • 穩定性測試

效能最佳化,根據網站分層架構,可以分為三大類:

  • Web 前端效能最佳化
    • 瀏覽器訪問最佳化
      • 減少 http 請求
      • 使用瀏覽器緩衝
      • 啟用壓縮
      • CSS 放在頁面最上面,JavaScript 放在頁面最下面
      • 減少 Cookie 傳輸
    • CDN 加速:本質是一個緩衝,一般緩衝靜態資源
    • 反向 Proxy
      • 保護網站安全
      • 通過配置緩衝功能加速 Web 請求
      • 實現負載平衡
  • 應用伺服器效能最佳化:主要手段有 緩衝、叢集、非同步
    • 分布式緩衝(網站效能最佳化第一定律:最佳化考慮使用緩衝最佳化效能)
    • 非同步作業(訊息佇列,削峰作用)
    • 使用叢集
    • 代碼最佳化
      • 多線程(設計為無狀態,使用局部對象,並發訪問資源使用鎖)
      • 資源複用(單例,對象池)
      • 資料結構
      • 記憶體回收
  • 儲存伺服器效能最佳化
    • 機械硬碟 vs. 固態硬碟
    • B+ 型樹狀結構 vs. LSM 樹
    • RAID vs. HDFS
高可用
  • 高可用的網站架構:目的是保證伺服器硬體故障時服務依然可用、資料依然儲存並能夠被訪問,主要手段資料和服務的冗餘備份及失效轉移
  • 高可用的應用:顯著特點是應用的無狀態性
    • 通過負載平衡進行無狀態服務的失效轉移
    • 應用伺服器叢集的 Session 管理
      • Session 複製
      • Session 綁定
      • 利用 Cookie 記錄 Session
      • Session 伺服器
  • 高可用的服務:無狀態的服務,可使用類似負載平衡的失效轉移策略,此外還有如下策略
    • 分級管理
    • 逾時設定
    • 非同步呼叫
    • 服務降級
    • 等冪性設計
  • 高可用的資料:主要手段是資料備份和失效轉移機制
    • CAP 原理
      • 資料一致性(Consisitency)
      • 資料可用性(Availibility)
      • 分區耐受性(Partition Tolerance)
    • 資料備份
      • 冷備:缺點是不能保證資料最終一致和資料可用性
      • 熱備:分為非同步熱備和同步熱備
    • 失效轉移:由以下三部分組成
      • 失效確認
      • 訪問轉移
      • 資料恢複
  • 高可用網站的軟體品質保證
    • 網站發布
    • 自動化測試
    • 預發布驗證
    • 代碼控制
      • 主幹開發、分支發布
      • 分支開發、主幹發布
    • 自動化發布
    • 灰階發布
  • 網站運行監控
    • 監控資料擷取
      • 使用者行為日誌採集(伺服器端和用戶端)
      • 伺服器效能監控
      • 運行資料報告
    • 監控管理
      • 警報系統
      • 失效轉移
      • 自動優雅降級
伸縮性

大型網站的“大型”是指:

  • 使用者層面:大量使用者及大量訪問
  • 功能方面:功能龐雜,產品眾多
  • 技術層面:網站需要部署大量的伺服器

伸縮性的分為如下幾個方面

  • 網站架構的伸縮性設計
    • 不同功能進行物理分離實現伸縮
      • 縱向分離(分層後分離)
      • 橫向分離(業務分割後分離)
    • 單一功能通過叢集規模實現伸縮
  • 應用伺服器叢集的伸縮性設計
    • HTTP 重新導向負載平衡
    • DNS 網域名稱解析負載平衡
    • 反向 Proxy負載平衡(在 HTTP 協議層面,應用程式層負載平衡)
    • IP 負載平衡(在核心進程完成資料分發)
    • 資料連結層負載平衡(資料連結層修改 mac 地址,三角傳輸模式,LVS)
    • 負載平衡演算法
      • 輪詢(Round Robin, RR)
      • 加權輪詢(Weighted Round Robin, WRR)
      • 隨機(Random)
      • 最少連結(Least Connections)
      • 源地址散列(Source Hashing)
  • 分布式緩衝叢集的伸縮性設計
    • Memcached 分布式緩衝叢集的訪問模型
      • Memcached 用戶端(包括 API,路由演算法,伺服器列表,通訊模組)
      • Memcached 伺服器叢集
    • Memcached 分布式緩衝叢集的伸縮性挑戰
    • 分布式緩衝的一致性 Hash 演算法(一致性 Hash 環,虛擬層)
  • 資料存放區服務叢集的伸縮性設計
    • 關聯式資料庫叢集的伸縮性設計
    • NoSQL 資料庫的伸縮性設計
可擴充

系統架構設計層面的“開閉原則”

  • 構建可擴充的網站架構
  • 利用分布式訊息佇列降低耦合性
    • 事件驅動架構(Event Driven Architecture)
    • 分布式訊息佇列
  • 利用分布式服務打造可複用的業務平台
    • Web Service 與企業級分布式服務
    • 大型網站分布式服務的特點
    • 分布式服務架構設計(Thrift, Dubbo)
  • 可擴充的資料結構(如 ColumnFamily 設計)
  • 利用開放平台建設網站生態圈
網站的安全架構

XSS 攻擊和 SQL 插入式攻擊是構成網站應用程式攻擊最主要的兩種手段,此外還包括 CSRF,Session 劫持等手段。

  • 攻擊與防禦
    • XSS 攻擊:跨網站指令碼攻擊(Cross Site Script)
      • 反射型
      • 持久型
    • XSS 防禦手段
      • 消毒(即對某些 html 危險字元轉義)
      • HttpOnly
    • 注入攻擊
      • SQL 插入式攻擊
      • OS 注入攻擊
    • 注入防禦
      • 避免被猜到資料庫表結構資訊
      • 消毒
      • 參數綁定
    • CSRF 攻擊:跨網站請求偽造(Cross Site Request Forgery)
    • CSRF 防禦:主要手段是識別要求者身份
      • 表單 Token
      • 驗證碼
      • Referer Check
    • 其他攻擊和漏洞
      • Error Code
      • HTML 注釋
      • 檔案上傳
      • 路徑遍曆
    • Web Application Firewall(ModSecurity)
    • 網站安全性漏洞掃描
  • 資訊加密技術及密鑰安全管理
    • 單向散列加密:不同輸入長度的資訊通過散列計算得到固定長度的輸出
      • 無法復原,非明文
      • 可加鹽(salt)增加安全性
      • 輸入的微小變化會導致輸出完全不同
    • 對稱式加密:加密和解密使用同一個密鑰
    • 非對稱式加密
      • 資訊傳輸:公開金鑰加密,私密金鑰解密
      • 數位簽章:私密金鑰加密,公開金鑰解密
    • 密鑰安全管理:資訊安全傳輸是靠密鑰保證的,改善手段有:
      • 把密鑰和演算法放在一個獨立的伺服器上
      • 將加解密演算法放在應用系統中,密鑰放在獨立伺服器
  • 資訊過濾與反垃圾
    • 文本匹配
    • 分類演算法
    • 黑名單

大型網站技術架構-入門梳理【轉】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.