[筆記] 大型網站技術架構——核心原理與案例分析 [五]

5 萬無一失:網站的高可用架構

5.1 網站可用性的度量與考覈

5.1.1 網站可用性度量
5.1.2 網站可用性考覈

5.2 高可用的網站架構

數據和服務的冗餘備份及失效轉移。

在複雜的大型網站架構中,模塊劃分的粒度會更小、更詳細,結構更加複雜,服務器規模更加龐大。不同的業務產品會部署在不同的服務器集羣上。

5.3 高可用的應用

5.3.1 通過負載均衡進行無狀態服務的失效轉移
5.3.2 應用服務器集羣的Session管理

應用服務器的高可用架構設計主要基於服務無狀態這一特性,但是事實上,業務總是有狀態的。

  1. Session複製:應用服務器開啓Web容易的Session複製功能,在集羣中的幾臺服務器之間同步Session對象,使得每臺服務器上都保存所有用戶的Session信息。但是費內存,可能會出現Session過多導致服務器內存不夠的情況。
  2. Session綁定:利用負載均衡的源地址Hash算法實現,負載均衡服務器總是將來源於同一IP的請求分發到同一個服務器上。
  3. 利用Cookie記錄Session:利用瀏覽器支持的Cookie記錄Session
  4. Session服務器:利用獨立部署的Session服務器(集羣)同一管理Session,應用服務器每次讀寫Session時,都訪問Session服務器。

5.4 高可用的服務

可複用的服務模塊爲業務產品提供基礎公共服務,大型網站中這些服務通常都獨立分佈式部署,被具體應用遠程調用。可複用服務和應用一樣,也是無狀態的服務,因此可以使用類似負載均衡的失效轉移策略實現高可用的服務。

除此之外,具體實踐中,還有以下幾點高可用的服務策略。

  1. 分級管理:核心應用和服務優先使用更好的硬件
  2. 超時設置:一旦超時,應用程序根據服務調度策略,可選擇繼續重試或將請求轉移到提供相同服務的其他服務器上。
  3. 異步調用:避免一個服務失敗導致整個應用請求失敗的情況。
  4. 服務降級:爲保證核心應用和功能的正常運行,需要對服務進行降級。降級有兩種手段:拒絕服務和關閉服務
  5. 冪等性設計:必須在服務器層保證服務重複調用和調用一次產生的結果相同。

5.5 高可用的數據

保證數據存儲高可用的手段主要是數據備份失效轉移機制

失效轉移機制保證當一個數據副本不可訪問時,可以快速切換訪問數據的其他副本,保證系統可用。

5.5.1 CAP原理

  • 數據持久性
  • 數據可訪問性
  • 數據一致性

CAP原理認爲,一個提供數據服務的存儲系統無法同時滿足數據一致性、數據可用性、分區耐受性這三個條件。

大型網站中,通常會選擇強化分佈式存儲系統的可用性(A)和伸縮性(P),在某種程度上放棄一致性(C)。

數據一致性可分爲如下幾點:

數據強一致

數據用戶一致

數據最終一致

5.5.2 數據備份

冷備份、熱備份

熱備份可分爲兩種:異步熱備份方式和同步熱備份方式

異步方式是指多份數據副本的寫入操作異步完成,應用程序收到數據服務系統的寫操作成功響應時,只寫成功了一份,存儲系統將會異步地寫其他副本。

同步方式是指多份數據副本的寫入操作同步完成,即應用程序收到數據服務系統的寫成功響應時,多份數據都已經寫操作成功。

5.5.3 失效轉移

失效轉移操作主要由三部分組成:

  1. 失效確認:心跳檢測和應用程序訪問失敗報告
  2. 訪問轉移
  3. 數據恢復

5.6 高可用網站的軟件質量保證

軟件系統本身的風險

5.6.1 網站發佈
5.6.2 自動化測試
5.6.3 預發佈驗證
5.6.4 代碼控制

  • 主幹開發、分支發佈
  • 分支開發、主幹發佈

5.6.5 自動化發佈
5.6.6 灰度發佈

5.7 網站運行監控

“不允許沒有監控的系統上線”

5.7.1 監控數據採集

用戶行爲日誌收集

  1. 服務器端日誌收集
  2. 客戶端瀏覽器日誌收集(頁面中嵌入JavaScript腳本)

服務器性能監控

運行數據報告

5.7.2 監控管理

  • 系統報警
  • 失效轉移
  • 自動優雅降級






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章