1. 程式人生 > >大型站點技術架構(五)--站點高可用架構

大型站點技術架構(五)--站點高可用架構

簡單的 簡單 調度框架 遠程調用 通過 綁定 mod spa 三層

大型站點技術架構(一)--大型站點架構演化

大型站點技術架構(二)--架構模式

大型站點技術架構(三)--架構核心要素

大型站點技術架構(四)--站點的高性能架構



? ? ? 站點的可用性(Avaliability)描寫敘述站點可有效訪問的特性。

1、站點可用性的度量與考核

???? ?站點不可用時間(故障時間)=故障修復時間點-故障發現(報告)時間點


????? 站點年度不可用時間=(1-站點不可用時間/年度時間)× 100%


????? 可用性指標時站點架構設計的重要指標,對外是服務承諾,對內是考核指標,詳細到每一個project師。很多其它的是使用故障分。


????? 所謂故障分是指對站點故障進行分類加權計算故障責任的方法。例如以下是個案例:

分類

描寫敘述

權重

事故級故障

嚴重故障,站點總體不可用

100

A類故障

站點訪問不順暢或核心功能不可用

20

B類故障

非核心功能不可用。或核心功能少數用戶不能訪問

5

C類故障

其它故障

1

?

?????故障分的計算公式為:


???? 故障分=故障時間(分鐘)* 故障權重

2、站點的高可用架構

一個典型的站點設計通常遵循例如以下圖所看到的的基本分層模型。

技術分享圖片

?

在負載的大型站點架構中,劃分的粒度會更小,更詳細,但通常還是能夠把這些server劃分到這三層中。

技術分享圖片

???????? ? 對於應用層的server通常為了應對高並發的訪問請求,會通過負載均衡設備將一組server組成一個集群共同?對外提供服務,當負載均衡設備通過心跳檢測到某臺server不可用時,就將其從集群列表中提出,並將請求分發到集群中其它?可用的server上,是整個集群保存可用,從而實現應用高可用。

????????位於服務層的server情況和應用層相似,也是通過集群方式實現高可用,僅僅是這些server被應用層通過分布式服務調用框架訪問。?分布式服務調度框架會在應用層client中實現負載均衡功能。

??????? 位於數據層的server情況比較特殊。數據server上存儲著數據,為了保證數據不丟失,數據訪問服務不中斷,須要在數據寫入時進行數據同步復制,將數據寫入多臺server上,實現數據冗余備份。

??????? 站點升級的頻率一般都非常高,每次站點公布都須要關閉服務,又一次啟動系統,相當於server宕機。因此站點的可用性架構還須要考慮到站點升級?公布引起的宕機。

3、高可用的應用

???????? 應用層主要處理站點應用的業務邏輯。也稱為業務邏輯層。應用的一個顯著特點就是應用的無狀態行,因此實現負載均衡相對簡單一點。
???????? Web應用中將這些多次請求的上下文稱為回話(Session)。在單機情況下,session可部署在server上的Web容器上管理。在使用負載均衡?的集群環境中,因為負載均衡server可能會將請求分發到集群不論什麽一臺應用server上,所以保證每次請求依舊能夠獲得正確的session比單機?時要復雜的多。在集群環境下,session管理主要有 ?下面手段。

? ? ? ? ? 1、Session復制

Session復制是早期企業應用系統使用較多的一種server集群Session管理機制。應用server開啟Web容器的Session復制功能,在集群中幾臺server之間同步Session對象。是每臺server上都保存全部用戶的Session信息。

? ? ? ? 這樣的方案盡管簡單,從本機讀取Session信息也非常快,但當集群規模比較大的時候會占用server和站點的大量資源,在大量用戶訪問的情況下,甚至會出現內存不夠Session使用的情況。

? ? ? ? ?2、Session綁定

? ? ? ? Session綁定能夠利用負載均衡的源地址Hash算法實現,負載均衡server總是將來源於同一IP的請求分發到同一臺server上。這樣在整個回話期間。用戶全部的請求都在同一天server上處理,即Session綁定到某臺特定的server上。保證Session總能在這臺server上獲取。這樣的方法有成為回話粘滯。

? ? ? ? 3、利用Cookie記錄Session

? ? ? ? 一種管理Session的方式是將Session記錄在client,每次請求server的時候。將Session放在請求中發送給server,server處理完請求後再將改動後的Session響應給client。

? ? ? ?4、Sessionserver

? ? ? ? Sessionserver。即把session的管理獨立部署在某一臺機器上,Webserver不保存用戶Session信息,每次都去Sessionserver取數據。

? ? ? ? 這樣的解決方式其實是將應用server的狀態分離,分為無狀態的應用server和有狀態的Sessionserver。

對於有狀態的Sessionserver,一種比較簡單的方式是利用分布式緩存、數據庫等。

4、高可用的服務

? ? ? 可復用的服務模塊為業務產品提供基礎公共服務,大型站點中這些服務通常都獨立分布式部署。被詳細應用遠程調用。可復用的服務和應用一樣,是無狀態的,因此能夠使用相似負載均衡的失效轉移策略實效高可用的服務。 ? ? ? 除此之外,在實踐中,另一些幾點高可用的服務策略。

? ? ? 1、分級管理 ? ? ? 2、超時設置 ? ? ? 3、異步調用 ? ? ? 4、服務降級,站點高峰期間。能夠關閉一些不重要的服務,如評論。

5、高可用的數據

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

? ? ? CAP原理:即數據持久性、數據可訪問性、數據一致性。

6、高可用的站點質量保證

? ? ?這裏主要說下站點公布流程吧。看圖就可以:
技術分享圖片

?7、站點執行監控

? ? ?“不同意沒有監控的系統上線”。站點執行監控對於站點運維和架構設計優化至關重要,運維沒有監控的站點,宛如駕駛沒有儀表的飛機。 ? ? ?詳細到監控哪些數據,主要有:
? ? ? 1、用戶行為日誌收集(server端和瀏覽器端)
? ? ? 2、server性能監控(CPU、內存等) ? ? ? 3、執行數據監控(緩存命中率、平均響應延遲時間、每分鐘發送郵件數目、待處理的任務總數等
? ? 監控數據採集後,除了用作系統性能評估、集群規模伸縮性預測等。還能夠依據實時監控數據進行風險預警。並對server進行失效轉移。自己主動負載調整,最大化利用集群全部機器的資源。

?

大型站點技術架構(五)--站點高可用架構