大型互聯網技術架構-讀書總結

大型互聯網軟件系統的特色

  • 高併發,大流量
  • 高可用
  • 海量數據
  • 用戶分佈普遍,網絡狀況複雜
  • 安全環境惡劣
  • 需求快速變動,發佈頻繁
  • 漸進式發展

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

  1. 初始階段:應用、數據庫、文件等全部資源都在一臺服務器
  2. 應用服務和數據服務分離
  3. 使用緩存改善網站性能:本地緩存和遠程緩存
  4. 使用應用服務器集羣改善網站的併發處理能力
  5. 數據庫讀寫分離
  6. 使用反向代理和CDN加速網站響應
  7. 使用分佈式文件系統和分佈式數據庫系統
  8. 使用NoSQL和搜索引擎
  9. 業務拆分
  10. 分佈式服務

網站架構模式

  • 分層

應用層,服務層,數據層前端

  • 分割

按業務拆分,邏輯或物理部署上也均可以獨立。數據庫

  • 分佈式

分佈式應用和服務,分佈式靜態資源,分佈式數據和存儲,分佈式計算,分佈式配置,分佈式鎖,分佈式文件瀏覽器

  • 集羣

多臺服務器部署相同應用構成一個集羣,經過負載均衡設備共同對外提供服務緩存

  • 緩存

CDN,反向代理,本地緩存,分佈式緩存安全

  • 異步

一個業務操做分紅多個階段,每一個階段之間經過共享數據的方式異步進行寫做。性能優化

特性:提升系統可用性,加快網站響應速度,消除併發訪問高峯服務器

  • 冗餘

服務器冗餘運行,數據冗餘備份:當某臺服務器宕機時,能夠將其上的服務和數據訪問轉移到其餘服務器上網絡

  • 自動化

發佈過程自動化、自動化代碼管理、自動化測試、自動化安全測試、自動化部署、自動化監控、自動化報警、自動化失效恢復、自動化降級、自動化分配資源數據結構

  • 安全

常見安全攻擊:XSS攻擊、SQL注入、CSRF攻擊等多線程

大型網站核心架構要素

  • 性能

相關指標:響應時間、併發數、吞吐量、性能計數器(描述服務器或操做系統性能的一些數據指標)

  • 可用性

可用性指標

故障分類及權重

  • 伸縮性

經過不斷向集羣中加入服務器的手段來緩解不斷上升的用戶併發訪問壓力和不斷增加的數據存儲需求

  • 擴展性

在網站新增業務產品時,是否能夠實現對現有產品透明無影響,不須要任何改動或不多改動既有業務功能就能夠上線新產品

  • 安全性

衡量網站安全機構的標準:針對如今和潛在的各類攻擊與竊密手段,是否有可靠的應對策略。

性能測試方法

  • 性能測試

以系統升級初期規劃的性能指標爲預期目標,對系統不斷施加壓力,驗證系統在資源科接受範圍內,是否能達到性能瓶頸。

  • 負載測試

對系統不斷地增長併發請求以施加壓力,直到系統的某項或多項性能指標達到安全臨界值。

  • 壓力測試

超過安全負載的狀況下,對系統繼續施加壓力,直到系統崩潰或不能再處理任何請求。

  • 穩定性測試

被測試系統在特定硬件、軟件、網絡環境下,給系統加載必定業務壓力,使系統運行一段較長時間,以驗證系統是否穩定。

WEB前端性能優化

  • 瀏覽器訪問優化

手段:減小http請求,使用瀏覽器緩存,啓用壓縮,CSS放在頁面最上面、JavaScript放在頁面最下面,減小Cookie傳輸

  • CND加速

通常緩存靜態資源,如圖片、文件、CSS、Script腳本、靜態網頁等

  • 反向代理

做用:保護網站安全、配置緩存加速Web請求、經過負載均衡構建集羣提升系統處理能力,改善高併發性能。

應用服務器優化

  • 分佈式緩存

網站性能優化第必定律:優先考慮使用緩存優化性能

  • 異步操做

消息隊列調用異步化--任何能夠晚點作的事情都應該晚點再作。

  • 使用集羣

避免單一服務器因負載壓力過大而響應緩慢

  • 代碼優化

重點關注:多線程(將對象設計未無狀態對象、使用局部對象、併發訪問資源時使用鎖)、資源複用、數據結構、垃圾回收等

  • 存儲性能優化

機械硬盤vs.固態硬盤、B+樹vs.LSM樹、RAIDvs.HDFS

相關文章
相關標籤/搜索