1. 程式人生 > >《大型網站技術架構》——第三章 大型網站核心架構要素

《大型網站技術架構》——第三章 大型網站核心架構要素

系統的各個重要組成部分及其關係構成了系統的架構。
系統功能

效能

響應
很多時候網站效能問題是網站架構升級優化的觸發器。

  • 瀏覽器端:瀏覽器快取、頁面壓縮、合理佈局頁面、減少Cookie傳輸
  • CDN:將網站靜態內容分發至離使用者最近的網路服務商機房
  • 反向代理伺服器:快取熱點檔案
  • 應用伺服器端:伺服器本地快取、分散式快取,非同步操作,應用伺服器叢集
  • 程式碼層面:多執行緒、改善記憶體管理
  • 資料庫伺服器端:索引、快取、SQL優化,NoSQL資料庫
    效能指標:響應時間、TPS、系統性能計數器
    超負載場景下
    持續執行切訪問壓力不均勻的場景下

可用性

網站高可用的主要手段是冗餘。
多臺應用伺服器組成叢集。前提是應用伺服器上不能儲存請求的會話資訊。
儲存伺服器對資料備份。
衡量一個系統架構設計是否滿足高可用對目標,就是假設系統中任何一臺或者多臺伺服器宕機時,以及出現各種不可預期的問題時,系統整體是否依然可用。

伸縮性

通過不斷向叢集中加入伺服器的手段來緩解不斷上升的使用者併發訪問壓力和不斷增長的資料儲存需求。
衡量架構伸縮性的主要標準就是是否可以用多臺伺服器構建叢集,是否容易向叢集中新增新的伺服器。加入新的伺服器後是否可以提供和原來的伺服器無差別的服務。叢集中可容納的總的伺服器數是否有限制。
應用伺服器叢集:只要伺服器上不儲存資料,所有伺服器都是對等的。通過使用合適的負載均衡裝置就可以向叢集不斷加入伺服器。
快取伺服器叢集:加入新的伺服器可能會導致快取路由失效。?
關係資料庫:很難做到大規模叢集的可伸縮性。
NoSQL資料庫:先天為海量資料而生,對伸縮性的支援通常非常好。

擴充套件性

快速響應需求變化。
衡量網站架構擴充套件性好壞的主要標準就是在網站增加新的業務產品時,是否可以實現對現有產品透明無影響。
主要手段:

  • 事件驅動架構:訊息佇列
  • 分散式服務:將業務和可複用服務分離開,通過分散式服務框架呼叫。新增產品通過呼叫可複用對服務實現業務邏輯,對現有產品沒有任何影響。可複用服務提供多版本。

安全性

保護網站不受惡意訪問和攻擊,保護網站的重要資料不被竊取。