2011年4月12日,算法
亞馬遜雲計算服務EC2發生故障,安全
其ESB服務不可用,故障持續了數天,服務器
最終仍是有部分數據未能恢復。cookie
這一故障致使美國許多使用亞馬遜的知名網站受到影響,session
並引起了人們對使用雲計算安全性、可靠性的大規模討論。架構
高可用架構是萬無一失的。要保證一個網站永遠徹底可用幾乎是一件不可能完成的任務。咱們經過一個神奇的數字9來度量網站可用性,採用故障分來考覈網站可用性。可用性指標是網站架構設計的重要指標,網站可用性看得見,摸得着,跟技術、運營、相關各方的績效考覈息息相關。一個典型的網站設計遵循基本分層架構模型即應用層、服務層、數據層。應用層主要負責具體業務邏輯處理;服務層負責提供可複用的服務;數據層負責數據的存儲和訪問。網站的可用性架構設計不但考慮實際的硬件故障引發的宕機,還要考慮網站升級發佈引發的宕機。高可用的服務策略包括分級管理、超時設置、服務降級(關閉非核心服務)等。高可用的數據是最寶貴的資產,保證數據存儲高可用的手段主要是數據備份和失效轉換機制。數據備份能夠實現數據徹底的持久化,失效轉換機制是爲了保證系統可用。保證網站高可用,萬無一失,是一個艱難的過程,還須要更多努力。併發
1,應用層的高可用
應用層主要處理網站應用的業務邏輯,顯著特色是應用的無狀態性。對於應用服務器集羣,實現這種服務器可用狀態實時監測、自動轉移失敗任務的機制是負載平衡。
負載平衡主要是用在業務量和數據量較高的狀況下,當單臺服務器不足以承擔全部壓力時經過負載均衡將流量分攤到一個集羣組成的多臺服務器上,以提升總體的負載處理能力。
Session管理:
1)Session複製:在幾臺服務器之間同步session對象,使得每臺服務器上都保存全部用戶的session信息。
2)Session綁定:負載均衡的源地址hash算法。負載均衡服務器老是未來源於同一IP的請求分發到同一臺服務器上。又稱做會話黏滯。
3)利用cookie記錄session:將session記錄在客戶端
4)Session服務器:利用獨立不熟的session服務器(集羣)統一管理session。
2,服務層的高可用
1)分級管理:將服務器進行分級管理,核心應用和服務優先使用更好的硬件。
2)超時設置:在應用程序中設置服務超時時間。
3)異步調用:應用對服務的調用經過消息隊列等異步方式完成,避免一個服務失敗致使整個應用請求失敗的狀況。
4)服務降級:經過拒絕服務(拒絕低優先級應用的調用,減小服務調用併發數,或者隨機拒絕部分請求調用)和關閉功能(關閉部分不重要的服務)
5)冪等性設計:在服務層保證服務重複調用和調用一次產生的結果相同。
3,數據層的高可用
保證數據存儲高可用的主要手段是數據備份和失效轉移機制。數據備份是保證數據有多個副本,任意副本都不會致使數據的永久丟失,從而實現數據的持久化;而失效轉移機制則保證當一個數據副本不可訪問時,能夠快速切換訪問數據的其餘副本,保證系統可用。
CAP原理:一個提供數據服務的存儲系統沒法同時知足數據一致性、數據可用性、分區耐受性這三個條件。
數據備份:
1)冷備份:簡單廉價/不能保證數據最終一致和數據可用性。
2)熱備份:異步熱備份/同步熱備份。異步方式試製多份數據副本的寫入操做異步完成,應用程序收到數據服務系統的寫操做成功響應時只寫成功了一份,存儲系統會異步的寫其餘副本。同步方式是指多分數據副本的寫入操做同步完成,即應用程序收到數據服務系統的寫成功響應時,多分數據都已經寫操做成功。
失效轉移:
1)失效確認:心跳檢測和應用程序訪問失敗報告
2)訪問轉移:對於徹底對等存儲的服務器,其中一臺宕機後切換到對等服務器上;如果不對等的,就須要從新計算路由選擇存儲服務器
3)數據恢復:系統須要從間看的服務器複製數據將數據副本數目恢復到設定值。負載均衡
網站的可用性指標是網站架構設計中的重要指標,對外是服務承諾,對內是考覈指標。因此說,一個高可用的網站架構是一個公司所須要具有的。而在影響網站可用性的衆多因素中,硬件故障是常態,網站的高可用架構設計的主要目的就是保證服務器硬件故障時,服務依然可用、數據依然保存並可以被訪問。異步