大型網站技術架構——核心原理與案例分析(一)

steven.cao發表於2017-10-30

一、大型網站架構模式:

1、分層 – 橫向 如應用層、服務層、資料層

2、分割-縱向 將業務化分為不同粒度的細小的功能和服務 如訂單業務、購物車業務、簡訊業務、郵件業務等

3、分散式-將不現的服務、不同的模組部署在不同的伺服器,通過遠端呼叫協同工作,分散式靜態資源、分散式資料和儲存、分散式計算。注意,會對效能有影響(網路請求開銷),分散式事物、資料一致性。

4、叢集-用更多伺服器提供相同的服務,可以提供很好的併發性,不足以支援訪問量時,只需要要向叢集中加入新的機器即可。當一臺機子不可用時,可通過負載裝置或失效轉移機制把請求轉發到叢集的其他伺服器。從而 可提升網站的可用性,

5、快取-改善軟體效能的第一手段。

          CDN,放在離終端使用者最近的網路服務商,使用者請求先到網路服務商(快取網站的一些靜態資源,較少變化的資料);           反向代理,使用者請求到到中心伺服器時,請求最先到達,這裡快取網站的靜態資源,使用者的請求不需要轉發到應用伺服器,即可返回,

         本地快取,快取一些熱點資料,無需訪問資料庫

         分散式快取 :使用前提條件:1、資料訪問熱點不均衡 2、資料在某個時間段內有效,不會很快過期

                              快取的好處:可以加快資料訪問速度,還可以減輕後端應用和資料儲存的負載壓力。

6、非同步-降低軟體的耦合性,如生產消費者 ,優點:1、可提高系統的可用性 2、加快網站響應速度 3、消除網站併發訪問高峰。

7、冗餘-主要是針對資料,當伺服器當機時,保證資料不丟失。資料冗餘備份。資料庫除了定期備份(冷備份),同時要同步熱備份(主從複製),同時為了抵禦不可抗力(地震、海嘯等)還要進行災備。

8、自動化

      自動化程式碼管理-程式碼版本控制、程式碼分支建立;

      自動化測試-程式碼提交,系統自動將程式碼部署到測試伺服器,啟動自動化測試用例進行測試

      自動化安全檢測-安全檢測工具對程式碼靜態安全掃描及部署到安全測試環境進行安全攻擊測試

      自動化部署-將工程程式碼自動部署到線上生產環境。

      自動化監控、自動化報警、自動化失效轉移、自動化失效恢復、自動化降級、自動化分配資源。也是對其要求。

9、安全

    網站的安全性、防止XSS攻擊、SQL隱碼攻擊、編碼轉換等要對其進行相應的處理。對敏感資訊進行過濾,對垃圾資訊進行遮蔽。

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

1、效能

    瀏覽器端:可通過瀏覽器快取、頁面壓縮、合理佈局頁面,減少Cookie傳輸等手段,還可以使用CDN,將靜態內容分發至離使用者最近的網路服務商機房。可在網站機房部署反向代理伺服器,快取熱點檔案,加快響應速度,減輕應用伺服器負載壓力

    應用伺服器端:使用本地快取、分散式快取

   效能的衡量指標:重要的有響應時間、TPS、系統效能計數器

2、可用性

      7*24小時,高可用的設計目標。網站高可用的主要手段是冗餘,應用部署在多臺伺服器上同時提供訪問,資料儲存在多臺伺服器上互相備份

3、伸縮性

     是否容易向叢集中新增新的伺服器,加入新的伺服器後是否可以提供和原來的伺服器無差別的服務,叢集中可容納的總的伺服器數量是否有限制。

      問題:加入新的伺服器後可能會導致快取路由失效,進而導致叢集中的大部分快取資料都無法訪問。

4、擴充套件性

    衡量網站架構擴充套件性好壞的主要標準就是網站增加新的業務產品時,是否可以實現對現有產品透明無影響。不需要改動或是很少改動既有業務功能就可以上線新的產品。不同的產品之間是否很少耦合

   主要手段:事件驅動構架和分散式服務

  事件驅動架構通過訊息佇列實現。

  分散式服務則是將業務和可複用的服務分離開來。

5、安全性

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


相關文章