專案-整體架構

yoylee_web發表於2018-06-15
  • 前端架構

    • 使用者請求到達網站應用伺服器之前的環節

    • 瀏覽器優化

      • 瀏覽器本地頁面快取

      • 合併http減少請求次數

      • 頁面壓縮

    • CDN

      • 將靜態頁面分發到離使用者最近的cdn伺服器

    • 動靜分離,靜態資源獨立部署

      • 靜態資源(js,css,網站logo,按鈕圖片等)部署在專門的伺服器上,和web應用動態服務分離,並使用專門二級域名

    • 圖片服務

      • 使用者上傳圖片使用獨立部署的圖片伺服器叢集,並使用專門二級域名

    • 反向代理

      • 在應用伺服器,靜態資源伺服器,圖片伺服器之前,提供頁面快取服務

    • DNS

      • DNS負載均衡

  • 應用層架構

    • 處理網站主要業務邏輯的地方

    • 分層

      • 使用框架進行分層,例如springmvc將專案進行分為view model controller

    • 負載均衡

      • 將多型伺服器組合為一個叢集,同過負載均衡技術將請求分發到不同的伺服器上,提高專案的高併發負載壓力

    • session管理

      • 為了實現高可用的應用伺服器叢集,應用伺服器通常設定為無狀態的。所以需要用專門的機制管理session(使用者會話資訊),使叢集內甚至跨叢集可以共享session進行狀態統一

    • 動態頁面靜態化

      • 主要針對訪問量特別大並且更新不是很頻繁的動態頁面

      • 將這種頁面進行靜態化,即生成一個靜態頁面,然後再利用靜態頁面的優化手段進行優化,比如CDN,反向代理,瀏覽器快取等。

    • 業務拆分

      • 分為縱向拆分和橫向拆分(可以實現系統的 伸縮性)

      • 縱向拆分:將業務處理流程上的不同部分進行分離部署(比如:網站產品,可複用業務服務,基礎技術服務,資料庫)

      • 橫向拆分:將不同的業務模組進行分離部署(網站前臺,賣家後臺,買家後臺)

      • 降低了系統耦合度

    • 虛擬化伺服器

      • 將一臺物理伺服器分割為多個虛擬伺服器,對於一些併發訪問量比較少的業務,更容易用較少的資源構建高可用的伺服器叢集

  • 服務層架構

    • 提供基礎服務供應用層呼叫,完成網站業務

    • 分散式訊息

      • 採用訊息佇列機制,是實現業務和業務、業務和服務之間的非同步訊息傳送以及低耦合的業務關係。

      • 使用訊息佇列也可以實現”削峰“的作用,就是在超出平常併發的時候,將一些請求放在訊息佇列進行非同步執行 。

    • 分散式服務

      • 提供高效能、低耦合、易複用、易管理的分散式服務。

      • 在網站實現面向服務架構(SOA)

    • 分散式快取

      • 通過可伸縮的伺服器叢集提供大規模熱點資料的快取服務。

      • 通常的網站中,80%的請求集中在20%的資料,所以將熱點資料進行快取,可以顯著提高網站的效能

    • 分散式配置

      • 在系統執行期提供配置動態推送服務,將配置修改實時推送到應用系統,無需重啟伺服器。

  • 儲存層架構

    • 提供資料、檔案的持久化訪問與管理服務

    • 分散式檔案

      • 網站的線上業務需要儲存的檔案大部分是圖片、視訊等較小的檔案,但是數量非常龐大,需要設計伸縮性比較好的分散式檔案系統。

      • 在分散式檔案系統中,對於不同型別的檔案一應該設定不同的叢集,比如將大檔案與小檔案分離儲存,避免大檔案的長時間操作對小檔案影響。

    • 關聯式資料庫

      • 大部分系統還是主要使用關係型資料庫儲存資料,但是關聯式資料庫對伸縮性的支援比較差。對於大型系統,nosql不可避免的要使用

    • nosql資料庫

      • nosql資料庫產品有許多,在記憶體管理、資料模型、叢集分散式管理等方面各有優勢。

      • redis   HBase等

    • 資料同步

      • 使用資料庫叢集,難免遇到資料同步的問題

      • 叢集中的資料需要保持同步,這樣才可以保持高可用性,當一臺資料儲存伺服器當機後,可以保證資料不丟失,與資料的可用性

  • 後臺架構

    • 搜尋引擎

      • 即使是網站內部的搜尋引擎,也要進行資料增量更新、構建索引等操作,這些都是在後臺定時進行的

    • 資料倉儲

      • 根據離線資料,提供資料分析和資料探勘服務

  • 安全架構

    • 保護網站和敏感資訊洩露

    • web攻擊

      • 主要包括sql注入攻擊和xss攻擊

    • 資料保護

      • 敏感資訊加密傳輸與儲存,保護網站和使用者資產

  • 資料採集與監控

    • 監控網站訪問情況與系統執行情況

    • 瀏覽器資料採集

      • 通過在網站頁面中嵌入js指令碼採集使用者瀏覽器環境和操作記錄,分析使用者行為。

    • 伺服器業務資料採集

      • 採集使用者操作日誌和程式執行時業務資料

    • 效能資料採集

      • 採集服務端的效能資料,比如系統負載、記憶體使用率和網路卡流量等

    • 系統監控

      • 將前述採集的資料以圖表的方式展示給運維監控網站執行狀態。

      • 根據採集的資料進行自動化運維、自動處理系統異常情況,實現自動化控制

    • 系統報警 

      • 設定系統一些引數的閾值如果系統的數值超過該閾值,則進行報警。

 

 

相關文章