網站的高可用架構

網站的可用性描述網站可有效訪問的特性。網站的高可用架構設計的主要目的就是保證服務器硬件故障時服務依然可用、數據依然保存並能夠被訪問。實現這種高可用架構的主要手段是數據和服務的冗餘備份以及失效轉移

大型網站使用分層架構以及物理服務器的分佈式部署使得位於不同層次的服務器具有不同的可用性特點。

典型的分層模型是三層:應用層服務層數據層

應用層

位於應用層的服務器通常爲了應對高併發的訪問請求,會通過負載均衡設備將一組服務器組成一個集羣共同對外提供服務,方負載均衡設備通過心跳檢測等手段監控到某臺應用服務器不可用時,就將其從集羣列表中剔除,並將請求分發到集羣中其他可用的服務器上,使整個集羣保持可用,從而實現應用高可用。

服務層

位於服務層的服務器也通過集羣實現高可用,這些服務器被應用層通過分佈式服務調用框架訪問,分佈式服務調用框架會在應用層客戶端程序中實現軟件負載均衡,並通過服務註冊中心對提供服務的服務器進行心跳檢測,發現有服務不可用,立即通知客戶端程序修改服務訪問列表,剔除不可用的服務器。

數據層

位於數據層的服務器比較特殊,爲了保證服務器宕機時數據不丟失,數據訪問服務不中斷,在數據寫入時進行數據同步複製,將數據寫入多臺服務器,實現數據冗餘備份。


高可用的應用(應用層)

應用層主要處理網站應用的業務邏輯,其顯著特點是應用的無狀態性。

1、通過負載均衡進行無狀態服務的失效轉移

負載均衡軟件一般都提供失效轉移功能。在業務量和數據量較高的情況下,當單臺服務器不足以承擔所有的負載壓力時,通過負載均衡手段,將流量和數據分攤到一個集羣組成的多臺服務器上。

2、應用服務器集羣的session管理

應用服務器的高可用架構設計主要基於服務無狀態這一特性,但是事實上,業務總是有狀態的。Web應用中將這些多次請求修改使用的上下文對象稱爲會話session

集羣環境下,session管理手段有:

(1)session複製

類似於JBoss,應用服務器開啓Web容器的session複製功能,在集羣中的幾臺服務器之間同步session對象,使得每臺服務器上都保存所有用戶的session信息。

(2)session綁定

session綁定(即會話粘滯)利用負載均衡的源地址Hash算法實現,負載均衡服務器總是將來源於同一IP的請求分發到同一臺服務器上(也可以根據cookie信息)。

缺點:無備份

(3)利用cookie記錄session

將session記錄在客戶端,每次請求服務器時,將session放在請求中發送給服務器,服務器處理完請求後將修改過的session響應給客戶端。

一般使用cookie來實現,但是cookie大小有限;每次請求響應都傳輸cookie會影響性能。

(4)session服務器

利用獨立部署的session服務器(集羣)統一管理session,應用服務器每次讀寫session時,都訪問session服務器。其本質是將應用服務器的狀態分離,分爲無狀態的應用服務器和有狀態的session服務器。


高可用的服務(服務層)

可複用的服務模塊爲業務產品提供基礎公共服務,大型網站中,這些服務通常都是獨立分佈式部署,被具體應用遠程調用。其高可用的服務策略有

1、分級管理

在服務部署上進行必要的隔離,避免故障的連鎖反應。低優先級的服務通過啓動不同的線程或者部署在不同的虛擬機上進行隔離;高優先級的服務則需要部署在不同的物理機上;核心服務和數據甚至需要部署在不同地域的數據中心

2、超時設置

在應用程序中設置服務調用的超時時間,一旦超時,通信框架就拋出異常,應用程序根據服務調度策略,可選擇繼續重試或將請求轉移到提供相同服務的其他服務器上。這樣就可以避免失去響應時佔用應用程序的資源。

3、異步調用

應用對服務的調用通過消息隊列等異步方式完成,避免一個服務失敗導致整個應用請求失敗。

4、服務降級

在網站訪問高峯期,服務可能因爲大量的併發調用而性能下降,嚴重時可能會導致服務宕機。爲了保證核心應用和功能的正常使用,對服務進行降級,降級有兩種手段:拒絕服務關閉服務

(1)拒絕服務

拒絕優先級應用的調用,減少服務調用併發數,保證核心應用正常使用;或者隨機拒絕部分請求調用。

(2)關閉功能

關閉不重要的服務,或者服務內部關閉不重要的功能,以節約系統開銷,爲重要的服務和功能讓出資源。

5、等冪性設計

應用調用服務失敗後,會將調用請求重新發送到其他服務器,但是這個失敗可能是虛假的,如:處理成功,但未受到相應。

等冪性設計在服務層保證服務重複調用和調用一次產生的結果相同,即服務據有等冪性。


高可用的數據(數據層)

保證數據存儲高可用的手段主要有:數據備份失效轉移機制

 1、CAP原理

CAP原理認爲一個提供數據服務的存儲系統無法同時滿足數據一致性(Consistency)、數據可用性(Availability)、分區耐受性(Partition Tolerance)

2、數據備份

數據熱備可分爲兩種:異步熱備方式同步熱備方式

(1)異步熱備方式

異步方式是指多份數據副本的寫入操作異步完成,應用程序收到數據服務系統的寫操作成功響應時,只寫成功一份,存儲系統會異步地寫其他副本。

異步寫入方式下,存儲服務器分爲主存儲服務器(Master)和從存儲服務器(Slaver)。應用程序正常情況下只連接主存儲服務器,數據寫入時,由主存儲服務器的寫操作代理模塊將數據寫入到本機存儲系統後立即返回寫操作成功響應,然後通過異步線程將寫操作數據同步到從存儲服務器。

(2)同步熱備方式

同步方式是指多份數據副本的寫操作同步完成,即應用程序收到數據服務系統的寫成功響應時,多分數據都已經寫操作成功。

3、失效轉移

失效轉移由三部分組成:失效確認、訪問轉移、數據恢復。

(1)失效確認

系統確認一臺服務器是否宕機的手段有兩種:心跳檢測、應用程序訪問失敗報告。

對於應用程序的訪問失敗報告,控制中心還需要再一次發送心跳檢測以確認。

(2)訪問轉移

確認某臺數據存儲服務器宕機後,將數據讀寫訪問重新路由到其他服務器上。

(3)數據恢復

某臺服務器宕機,數據存儲的副本就減少,必須將副本的數目恢復到系統設定的值。


【參考文獻】大型網站技術架構核心原理與案例分析,李智慧,電子工業出版社

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章