標籤:session管理 降級 產生 不能 指標 源地址 實現 硬體故障 叢集
大型網站核心架構要素之可用性
網站的可用性指標是網站架構設計中的重要指標,對外是服務承諾,對內是考核指標。所以說,一個高可用的網站架構是一個公司所需要具備的。而在影響網站可用性的眾多因素中,硬體故障是常態,網站的高可用架構設計的主要目的就是保證伺服器硬體故障時,服務依然可用、資料依然儲存並能夠被訪問。
實現上述高可用架構的主要手段是資料和服務的冗餘備份及失效轉移,一旦某些伺服器宕機,就將服務切換到其他可用的伺服器上,如果磁碟損壞,則從備份的磁碟中讀取資料。一個網站架構的基本分層模型是應用程式層、服務層、資料層,所以要實現上述高可用架構就是要實現應用的高可用、服務的高可用、資料的高可用。
高可用的應用。一是通過負載平衡進行無狀態服務的失效轉移,簡單來說當多台伺服器組成的叢集中的某一台伺服器宕機,負載平衡伺服器通過心跳檢測機制發現該伺服器,隨後將對該伺服器的請求發送到這個叢集的其他伺服器上;二是應用伺服器叢集的Session管理,叢集環境下,Session管理的主要手段有:1.Session複製,使叢集中的每一台伺服器都儲存所有使用者的Session資訊;2.Session綁定,即利用負載平衡的源地址Hash演算法將Session綁定在某台特定的伺服器上,保證Session總能在這台伺服器上擷取,但是一旦存放Session的伺服器宕機,那麼該伺服器上的所有Session都不複存在了,所以很少網站用這個演算法。3.利用Cookie記錄Session,這種方式簡單易用,可用性高,但也有一些缺點限制4.Session伺服器,利用獨立部署的Session伺服器叢集統一管理Session,應用伺服器每次讀取Session,都訪問Session伺服器。
高可用的服務。可複用的服務和應用一樣,也是無狀態的服務,因此可以使用類似負載平衡的失效轉移策略實現高可用的服務。除此之外,還有以下幾種高可用的服務策略:分級管理、逾時設定、非同步呼叫、服務降級、等冪性設計。
高可用的資料。不同於高可用的應用和服務,一旦伺服器宕機,資料訪問請求不能任意切換到叢集中的其他伺服器上。這時不能單純的使用失效轉移機制,而是將資料備份和失效轉移機制結合起來。而關於快取服務的高可用性,我認為快取服務不是資料存放區服務,快取服務是為了加快資料讀取而產生的,解決快取服務器宕機所帶來的問題,不能通過提高快取服務本身的高可用。
大型網站技術架構:核心原理與案例分析閱讀筆記四