大型高併發高負載web應用系統架構-緩存架構策略

 

 

大型高併發高負載web應用系統架構-緩存架構策略

目前在網站的架構構成中普遍使用到緩存來提供WEB應用的性能,由於網站規模的不同,分別存在如下幾種類型的緩存架構。

(1)單機緩存

(2)簡單分佈式緩存

(3)使用複製方式的緩存集羣

(4)使用散列方式的緩存集羣

(5)高性能高、可靠的緩存集羣

下面對於上述幾種緩存策略的實際應用的適用情況以及優缺點進行詳細分析,當然並沒有一個緩存的教條存在,有的只是參考案例,對於具體的應用來講要具體分析。

(1)單機緩存

      單機緩存也就是WEB應用和緩存是同一個應用,也就是最簡單的緩存策略,大家在程序中使用的static的HashMap、List這些都可以算作緩存的範疇。比較有代表性的單機緩存有OSCache、Ehcache。

      OSCache是個一個廣泛採用的高性能的J2EE緩存框架,OSCache能用於任何Java應用程序的普通的緩存解決方案。OSCache有以下特點:緩存任何對象,你可以不受限制的緩存部分jsp頁面或HTTP請求,任何java對象都可以緩存。

      Ehcache來源於Hibernate,是一個純java的在進程中的緩存,它具有以下特性:快速,簡單,爲Hibernate2.1充當可插入的緩存,最小的依賴性,全面的文檔和測試。

      對於WEB應用程序採用單機緩存策略可以大大提高系統的吞吐量。筆者曾經在一個電信的WEB應用程序中使用OSCache來緩存數據,將主頁面以及菜單對應的頁面級別的數據緩存起來,以及在不是通過“more”方式查詢出來的數據也就是說在頁面中可以直接訪問的數據都緩存起來,定時進行更新,對於系統的性能大大提升,對於數據庫的訪問量大大的減少了,主頁面可以達到1000個併發。

      單機緩存的讀寫訪問在所有的緩存策略中的性能最高,代價最小,在數據量不大並且在併發性能要求不是很高的情況下是非常合適的。單機緩存存在的問題是,可以緩存的數據量受到限制,並且它和應用部署到同一個服務器上彼此競爭消耗系統資源,無法擴展,並且在WEB訪問量上漲,WEB需要集羣部署的時候在所有的集羣中都需要保存同樣規模的緩存數據,不能彼此共享。

(2)簡單分佈式緩存

     簡單的分佈式緩存有兩種代表性的部署方式。

     1、單實例的memcached部署方式 

     在講到緩存的時候,memcached可能就無人不知啦,可以考慮單獨部署一臺memcached服務器,作爲中央緩存服務器,多個應用以都分別以客戶端的方式通過memcached服務器存取緩存數據,這樣就避免了單機緩存方案中同樣的數據需要在多個應用服務器中重複緩存的弊端。

      2、OSCache和Enhence的分佈式緩存

      OSCache和Enhence可以使用JGroups進行緩存數據的廣播,實現自動同步多個應用的緩存數據,在一個應用更新緩存之後該應用自動廣播該緩存信息到其它應用的緩存,其它應用不需要再次訪問數據庫來再次加載數據更型緩存。

      上述兩種簡單的分佈式緩存策略相對於單機緩存來講存在較大進行,尤其是使用memcached的方式,由於memcached緩存的性能非常高,分離了應用和緩存服務器,可以在集羣部署WEB應用的時候大大提高系統的吞吐量。至於OSCache和Enhence方式實現的分佈式緩存則還是基於單機緩存的方式,只不過是優化了緩存數據的存放性能,基本限制沒有得到改變。

(3)使用複製方式的緩存集羣

  在滿足如下幾個條件的時候可以使用複製方式的緩存集羣策略:

  1、需要緩存的數據量不是特別大,沒有超過單機的限制

  2、需要極高的讀取緩存的性能

  3、緩存中的數據變更的頻率不是特別大

  對於滿足上述3點要求的WEB應用,我們可以採用複製方式的緩存集羣來提高系統的性能。通常的方式爲使用虛擬IP的方式將多個緩存實例作爲一個集羣,該集羣對於客戶端應用來說是透明的,在一個緩存服務器宕機的時候,對於客戶端來說沒有影響。當一個應用更新了緩存的時候,該緩存實例通知集羣中的其他緩存服務器,由緩存集羣自動完成各個緩存服務器中緩存數據的同步。

(4)使用散列方式的緩存集羣

  在滿足如下幾個條件的時候可以使用散列方式的緩存集羣策略:

  1、需要緩存的數據量特別巨大

  2、需要極高的讀取緩存的性能

  3、允許單點故障

 

 

 

這是一篇轉載的文章,個人覺得memcached和散列方式的緩存集羣可能應用還可能比較廣,其他兩項不是很清楚,不過先積累下來,以後說不定就能用上了

發佈了18 篇原創文章 · 獲贊 26 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章