大型網站架構概覽

大型網站架構概覽

網站架構包括:前端架構+應用層架構+服務層架構+存儲層架構+後臺架構+數據中心機房架構+安全架構+數據採集與監控。

前端架構

  • 瀏覽器優化技術
  • 並不是優化瀏覽器,而是通過優化響應頁面,加快瀏覽器頁面的加載和顯示,常用的有頁面緩存、合併HTTP 減少請求次數、使用頁面壓縮等。
  • CDN
  • 內容分發網絡,部署在網絡運營商機房,通過將靜態頁面內容分發到離用戶最近的CDN 服務器,使用戶可以通過最短路徑獲取內容。
  • 動靜分離,靜態資源獨立部署
  • 靜態資源,如JS,CSS 等文件部署在專門的服務器集群上,和Web 應用動態內容服務分離,並使用專門的(二級)域名。
  • 圖片服務
  • 圖片不是指網站Logo 按鈕圖標等,這些文件屬於上面提到的靜態資源,應該和JS CSS 部署在一起。這裡的圖片指用戶上傳的圖片,如產品圖片、用戶頭像等,圖片服務同樣使用獨立部署的圖片服務器集群,並使用獨立(二級)域名。
  • 反向代理
  • 部署在網站機房,在應用服務器、靜態資源服務器、圖片服務器之前,提供頁面緩存服務。
  • DNS
  • 域名服務,將域名解析成IP 地址,利用DNS 可以實現DNS 負載均衡,配置CDN也需要修改DNS使域名解析後指向CDN 服務器。

應用層架構

應用層是處理網站主要業務邏輯的地方。

  • 開發框架
  • 頁面渲染
  • 將分別開發維護的動態內容和靜態頁面模板集成起來,組合成最終顯示給用戶的完整頁面。
  • 負載均衡
  • 將多臺應用服務器組成一個集群,通過負載均衡技術將用戶請求分發到不同的服務器上,以應對大量用戶同時訪問時產生的高併發負載壓力。
  • Session 管理
  • 為了實現高可用的應用服務器集群,應用服務器通常設計為無狀態,不保存用戶請求上下文信息,但是網站業務通常需要保持用戶會話信息,需要專門的.機制管理Session
  • 使集群內甚至跨集群的應用服務器可以共享Session
  • 動態頁面靜態化
  • 對於訪問量特別大而更新又不很頻繁的動態頁面,可以將其靜態化,即生成一個靜態頁面,利用靜態頁面的優化手段加速用戶訪問,如反向代理、CDN、 瀏覽器緩存等。
  • 業務拆分
  • 將複雜而又龐大的業務拆分開來,形成多個規模較小的產品,獨立開發、部署、維護,除了降低系統耦合度,也便於數據庫業務分庫。按業務對關係數據庫進行拆分,技術難度相對較小,而效果又相對較好。
  • 虛擬化服務器
  • 將一臺物理服務器虛擬化成多臺虛擬服務器,對於併發訪問較低的業務,更容易用較少的資源構建高可用的應用服務器集群。

服務層架構

提供基礎服務,供應用層調用,完成網站業務。

  • 分佈式消息
  • 利用消息隊列機制,實現業務和業務、業務和服務之間的異步消息發送及低耦合的業務關係。
  • 分佈式服務
  • 提供高性能、低耦合、易複用、易管理的分佈式服務,在網站實現面向服務架構SOA
  • 分佈式緩存
  • 通過可伸縮的服務器集群提供大規模熱點數據的緩存服務,是網站性能優化的重要手段。
  • 分佈式配置
  • 系統運行需要配置許多參數,如果這些參數需要修改,比如分佈式緩存集群加入新的緩存服務器,需要修改應用程序客戶端的緩存服務器列表配置,並重啟應用程序服務器。分佈式配置在系統運行期提供配置動態推送服務,將配置修改實時推送到應用系統,無需重啟服務器。

存儲層架構

  • 分佈式文件
  • 網站在線業務需要存儲的文件大部分都是圖片、網頁、視頻等比較小的文件,但是這些文件的數量非常龐大,而且通常都在持續增加,需要伸縮性設計比較好的分佈式文件系統。
  • 關係數據庫
  • 大部分網站的主要業務是基於關係數據庫開發的,但是關係數據庫對集群伸縮性的支持比較差。通過在應用程序的數據訪問層增加數據庫訪問路由功能,根據業務配置將數據庫訪問路由到不同的物理數據庫上,可實現關係數據庫的分佈式訪問
  • NoSQL 數據庫
  • 目前各種NoSQL 數據庫層出不窮,在內存管理、數據模型、集群分佈式管理等方面各有優勢,不過從社區活躍性角度看,HBase 無疑是目前最好的。
  • 數據同步
  • 在支持全球範圍內數據共享的分佈式數據庫技術成熟之前,擁有多個數據中心的網站必須在多個數據中心之間進行數據同步,以保證每個數據中心都擁有完整的數據。在實踐中,為了減輕數據庫壓力,將數據庫的事務日誌(或者NoSQL 的寫操作Log) 同步到其他數據中心,根據Log 進行數據重演,實現數據同步。

後臺架構

網站應用中,除了要處理用戶的實時訪問請求外,還有一些後臺非實時數據分析要處理。

  • 搜索引擎
  • 即使是網站內部的搜索引擎,也需要進行數據增量更新及全量更新、構建索引等。 這些操作通過後臺系統定時執行。
  • 數據倉庫
  • 根據離線數據,提供數據分析與數據挖掘服務。
  • 推薦系統
  • 社交網站及購物網站通過挖掘人和人之間的關係,人和商品之間的關係,發掘潛在的人際關係和購物興趣,為用戶提供個性化推薦服務。

數據採集與監控

監控網站訪問情況與系統運行情況,為網站運營決策和運維管理提供支持保障。

  • 瀏覽器數據採集
  • 通過在網站頁面中嵌入JS 腳本釆集用戶瀏覽器環境與操作記錄,分析用戶行為。
  • 服務器業務數據採集
  • 服務器業務數據包括兩種,一種是採集在服務器端記錄的用戶請求操作日誌;一種是釆集應用程序運行期業務數據,比如待處理消息數目等。
  • 服務器性能數據採集
  • 採集服務器性能數據,如系統負載、內存使用率、網卡流量等。
  • 系統監控
  • 將前述採集的數據以圖表的方式展示,以便運營和運維人員監控網站運行狀況,做 到這一步僅僅是系統監視。更先進的做法是根據釆集的數據進行自動化運維,自動處理 系統異常狀況,實現自動化控制。
  • 系統報警
  • 如果採集來的數據超過預設的正常情況的閾值,比如系統負載過高,就通過郵件、 短信、語音電話等方式發出報警信號,等待工程師干預。

安全架構

保護網站免遭攻擊及敏感信息洩露。

  • Web 攻擊
  • 以HTTP 請求的方式發起的攻擊,危害最大的就是XSS 和SQL 注入攻擊。但是隻要 措施得當,這兩種攻擊都是比較容易防範的。
  • 數據保護
  • 敏感信息加密傳輸與存儲,保護網站和用戶資產。

數據中心機房架構


分享到:


相關文章: