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

chaofanwei發表於2014-06-04

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

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

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

大型網站技術架構(四)--網站的高效能架構



      網站的可用性(Avaliability)描述網站可有效訪問的特性。

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

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


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


      可用性指標時網站架構設計的重要指標,對外是服務承諾,對內是考核指標,具體到每個工程師,更多的是使用故障分。
      所謂故障分是指對網站故障進行分類加權計算故障責任的方法。如下是個案例:

分類

描述

權重

事故級故障

嚴重故障,網站整體不可用

100

A類故障

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

20

B類故障

非核心功能不可用,或核心功能少數使用者不能訪問

5

C類故障

其他故障

1

 

     故障分的計算公式為:


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

2、網站的高可用架構

一個典型的網站設計通常遵循如下圖所示的基本分層模型。

 

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

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

        位於服務層的伺服器情況和應用層類似,也是通過叢集方式實現高可用,只是這些伺服器被應用層通過分散式服務呼叫框架訪問, 分散式服務排程框架會在應用層客戶端中實現負載均衡功能。

        位於資料層的伺服器情況比較特殊,資料伺服器上儲存著資料,為了保證資料不丟失,資料訪問服務不中斷,需要在資料寫入時進行資料同步複製,將資料寫入多臺伺服器上,實現資料冗餘備份。
        網站升級的頻率一般都非常高,每次網站釋出都需要關閉服務,重新啟動系統,相當於伺服器當機。因此網站的可用性架構還需要考慮到網站升級 釋出引起的當機。

3、高可用的應用

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

          1、Session複製

Session複製是早期企業應用系統使用較多的一種伺服器叢集Session管理機制。應用伺服器開啟Web容器的Session複製功能,在叢集中幾臺伺服器之間同步Session物件,是每臺伺服器上都儲存所有使用者的Session資訊。

        這種方案雖然簡單,從本機讀取Session資訊也很快,但當叢集規模比較大的時候會佔用伺服器和網站的大量資源,在大量使用者訪問的情況下,甚至會出現記憶體不夠Session使用的情況。

         2、Session繫結

        Session繫結可以利用負載均衡的源地址Hash演算法實現,負載均衡伺服器總是將來源於同一IP的請求分發到同一臺伺服器上。這樣在整個回話期間,使用者所有的請求都在同一天伺服器上處理,即Session繫結到某臺特定的伺服器上,保證Session總能在這臺伺服器上獲取,這種方法有成為回話粘滯。

        3、利用Cookie記錄Session

        一種管理Session的方式是將Session記錄在客戶端,每次請求伺服器的時候,將Session放在請求中傳送給伺服器,伺服器處理完請求後再將修改後的Session響應給客戶端。

       4、Session伺服器

        Session伺服器,即把session的管理獨立部署在某一臺機器上,Web伺服器不儲存使用者Session資訊,每次都去Session伺服器取資料。

        這種解決方案事實上是將應用伺服器的狀態分離,分為無狀態的應用伺服器和有狀態的Session伺服器。對於有狀態的Session伺服器,一種比較簡單的方式是利用分散式快取、資料庫等。

4、高可用的服務

      可複用的服務模組為業務產品提供基礎公共服務,大型網站中這些服務通常都獨立分散式部署,被具體應用遠端呼叫。可複用的服務和應用一樣,是無狀態的,因此可以使用類似負載均衡的失效轉移策略實效高可用的服務。
      除此之外,在實踐中,還有一些幾點高可用的服務策略。
      1、分級管理
      2、超時設定
      3、非同步呼叫
      4、服務降級,網站高峰期間,可以關閉一些不重要的服務,如評論。

5、高可用的資料

      保證資料儲存高可用的手段主要是資料備份和失效轉移機制。
      CAP原理:即資料永續性、資料可訪問性、資料一致性。

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

     這裡主要說下網站釋出流程吧。看圖即可:


 7、網站執行監控

     “不允許沒有監控的系統上線”。網站執行監控對於網站運維和架構設計優化至關重要,運維沒有監控的網站,猶如駕駛沒有儀表的飛機。
     具體到監控哪些資料,主要有:
      1、使用者行為日誌收集(伺服器端和瀏覽器端)
      2、伺服器效能監控(CPU、記憶體等)
      3、執行資料監控(快取命中率、平均響應延遲時間、每分鐘傳送郵件數目、待處理的任務總數等

    監控資料採集後,除了用作系統效能評估、叢集規模伸縮性預測等,還可以根據實時監控資料進行風險預警,並對伺服器進行失效轉移,自動負載調整,最大化利用叢集所有機器的資源。

 

相關文章