大型網站技術架構——2. 網站架構模式

weixin_34290000發表於2019-01-23

[TOC]

2. 網站架構模式

「模式」的定義:
每一個模式描述了一個在我們周圍不斷重複發生的問題及該問題的解決方案的核心。

模式的關鍵——模式的可重複性。

2.1 分層

將系統在橫向維度上切分成幾個部分,每個部分負責一部分相對比較單一的職責,然後通過上層對下層的依賴和呼叫組成一個完整的系統。

分層架構模式的目的:規劃軟體清晰的邏輯結構便於開發維護,支援網站從高併發向分散式方向發展。

網站分層架構 職責
應用層 負責具體業務和檢視展示,如網站首頁及搜尋輸入和結果展示。
服務層 為應用層提供服務支援,如使用者管理服務,購物車服務。
資料層 提供資料儲存訪問服務,如資料庫、快取、檔案、搜尋引擎等。

應用層可以繼續細分為:檢視層、業務邏輯層。
服務層可以繼續細分為:資料介面層、邏輯處理層。

分層面臨的挑戰:

  1. 合理規劃層次邊界和介面;
  2. 開發過程中,需要嚴格遵守分層架構約束,禁止跨層次呼叫及逆向呼叫。

2.2 分割

分割是在縱向上對軟體進行切分。

網站越大,功能越複雜,服務和資料處理的種類也越多,將這些不同的功能和服務分割開來,包裝成高內聚低耦合的模組單元,一方面有助於軟體的開發和維護;另一方面,便於不同模組的分散式部署,提高網站的併發處理能力和功能擴充套件能力。

大型網站分割的顆粒度可能會很小。

2.3 分散式

對於大型網站,分層和分割的一個主要目的是為了切分後的模組便於分散式部署,即將不同模組部署在不同的伺服器上,通過遠端呼叫協同工作
分散式意味著可以使用更多的計算機完成同樣的功能,計算機越多,CPU、記憶體、儲存資源也就越多,能夠處理的併發訪問和資料量就越大,進而能夠為更多的使用者提供服務。

分散式在解決高併發問題的同時帶來的困難:

  1. 服務呼叫必須通過網路,影響服務效能。
  2. 伺服器越多,當機的概率也越大,降低了網站可用性。
  3. 分散式資料庫如何保持資料一致性。
    4,分散式事務難以保證。
  4. 網站依賴錯綜複雜,增加了開發管理維護成本。
2648731-01ee1905bf057817.jpg
大型網站架構分散式方案

2.4 叢集

對於訪問集中的模組,需要將獨立部署的伺服器叢集化,即多臺伺服器部署相同應用構成一個叢集,通過負載均衡裝置共同對外提供服務。
叢集可以提高系統的併發性、可用性。

2.5 快取

快取就是將資料存放在距離計算最近的位置以加快處理速度。

2648731-59ed05bc305ee830.jpg
image

使用快取的兩個前提條件:

  1. 資料訪問熱點不均勻;
  2. 資料在某個時段內有效,不會很快過期,否則快取的資料就會因為已經失效而產生髒讀,影響結果的正確性。

2.6 非同步

  • 在單一伺服器內部可通過多執行緒共享記憶體佇列的方式實現非同步,處在業務操作前面的執行緒將輸出寫入到佇列,後面的執行緒從佇列中讀取資料進行處理;
  • 在分散式系統中,多個伺服器叢集通過分散式訊息佇列實現非同步,分散式訊息佇列可以看作記憶體佇列的分散式部署。

使用非同步訊息佇列的特性:

  • 提高系統可用性;
  • 加快網站響應速度;
  • 消除併發訪問高峰;

2.7 冗餘

  • 通過冗餘實現服務高可用:伺服器冗餘執行、資料庫冗餘備份。
  • 資料庫冷備份:定期備份,存檔儲存。
  • 資料庫熱備份:主從分離、同步備份。
  • 備份整個資料中心
  • 全球範圍內部署災備資料中心

2.8 自動化

2648731-c4d837356c1d40b7.jpg
image

2.9 安全

  • 通過密碼和手機校驗碼進行身份認證。
  • 通訊加密。
  • 驗證碼。
  • 編碼轉換防止 XSS、SQL隱碼攻擊等網站攻擊。
  • 垃圾資訊、敏感資訊過濾機制。
  • 交易風險控制系統。

相關文章