1. 程式人生 > >讀大型網站技術架構---第二篇---第五章---架構高可用

讀大型網站技術架構---第二篇---第五章---架構高可用

網站的可用性的度量和考核

可用性度量

網站不可用被稱作網站故障,QQ的可用性是4個9,即QQ服務99.99%可用,也就是一年中大約最多53分鐘不可用。

網站不可用時間 = 故障修復時間點 - 故障發現時間點;

網站年度可用性指標 = (1 - 網站不可用時間/年度總時間)* 100 %;

網站可用性考核

高可用的網站架構

高可用的架構設計主要目的就是保證伺服器硬體故障時服務依然可用,資料依然儲存並能夠被訪問。

高可用的應用

5.3.1 負載均衡進行無狀態服務的失效轉移

沒有狀態的應用給高可用的架構設計帶來便利,因此所有的伺服器都是對等的。對於應用伺服器叢集,實現這種伺服器可用狀態實時監測,自動轉移失敗任務的機制是負載均衡。

5.3.2 應用伺服器叢集的Session管理

1. Session複製

應用伺服器開啟Web容器的Session複製功能呢,在叢集中的幾臺伺服器之間同步Session物件,使得每臺伺服器都儲存所有使用者的Session資訊。

缺點:方案雖簡單,從本機讀取Session資訊也很快速,但是隻能在叢集規模比較小的情況下。當叢集規模較大時,叢集伺服器需要大量的通訊進行Session複製。這就使得大型網站的核心應用叢集就是數千臺伺服器,同時線上使用者可達千萬,因此不適合這種方案。

2. Session繫結

Session繫結就是利用利用負載均衡的源Hash演算法實現,負載均衡伺服器總是將來源於同一個IP的請求分發到同一臺伺服器上。整個會話期間,使用者所有的請求都在同一個服務上處理,即Session繫結在某臺特定伺服器上,保證Sesssion總能在這臺伺服器上獲取。此種方法又被稱作會話黏滯。

缺點:不符合對系統高可用的需求,一旦某臺伺服器宕機,那麼Session就不復存在了。

3. 利用Cookie記錄Session

利用瀏覽器支援的Cookie記錄Session。

缺點:受限Cookie大小,影響效能,Cookie不可用等等因素。

4. Session伺服器

利用獨立部署的Session伺服器(叢集)同意管理Session,應用伺服器每次讀寫Session時,都訪問Session伺服器。

這種方式事實上就是將應用伺服器的狀態分離,分為無狀態應用伺服器和有狀態的Session伺服器。針對有狀態的伺服器,比較簡單的方式就是利用分散式快取,資料庫等。儲存Session。如果業務有比較高的要求還可以利用Session服務整合單點登入(SSO),使用者服務等功能,則需要開發專門的Session服務管理平臺。

針對其他的不想在此記錄,有點囉嗦書裡,沒啥好的記錄點,或許是自己沒到那個高度,所以關注的點不一樣。