分佈式緩存

本文將從理論的角度去介紹分佈式緩存,在構建大規模的web應用時,緩存技術可以說是必備的,學習的必要性不言而喻。

分佈式緩存概述

1.1 分佈式緩存的特性

分佈式緩存具有如下特性: 

1) 高性能:當傳統數據庫面臨大規模數據訪問時,磁盤I/O 往往成爲性能瓶頸,從而導致過高的響應延遲.分佈式緩存將高速內存作爲數據對象的存儲介質,數據以key/value 形式存儲,理想情況下可以獲得DRAM 級的讀寫性能;

2) 動態擴展性:支持彈性擴展,通過動態增加或減少節點應對變化的數據訪問負載,提供可預測的性能與擴展性;同時,最大限度地提高資源利用率;

3) 高可用性:可用性包含數據可用性與服務可用性兩方面.基於冗餘機制實現高可用性,無單點失效(single point of failure),支持故障的自動發現,透明地實施故障切換,不會因服務器故障而導致緩存服務中斷或數據丟失.動態擴展時自動均衡數據分區,同時保障緩存服務持續可用;

4) 易用性:提供單一的數據與管理視圖;API 接口簡單,且與拓撲結構無關;動態擴展或失效恢復時無需人工配置;自動選取備份節點;多數緩存系統提供了圖形化的管理控制檯,便於統一維護;

1.2 典型應用場景 

分佈式緩存的典型應用場景可分爲以下幾類:

1) 頁面緩存.用來緩存Web 頁面的內容片段,包括HTML、CSS 和圖片等,多應用於社交網站等;

2) 應用對象緩存.緩存系統作爲ORM 框架的二級緩存對外提供服務,目的是減輕數據庫的負載壓力,加速應用訪問;

3) 狀態緩存.緩存包括Session 會話狀態及應用橫向擴展時的狀態數據等,這類數據一般是難以恢復的,對可用性要求較高,多應用於高可用集羣;

4) 並行處理.通常涉及大量中間計算結果需要共享;

5) 事件處理.分佈式緩存提供了針對事件流的連續查詢(continuous query)處理技術,滿足實時性需求;

6) 極限事務處理.分佈式緩存爲事務型應用提供高吞吐率、低延時的解決方案,支持高併發事務請求處理,多應用於鐵路、金融服務和電信等領域.

1.3 分佈式緩存的發展 

分佈式緩存經歷了多個發展階段,由最初的本地緩存到彈性緩存平臺直至彈性應用平臺[8],目標是朝着構建更好的分佈式系統方向發展(如下圖所示).

1) 本地緩存:數據存儲在應用代碼所在內存空間.優點是可以提供快速的數據訪問;缺點是數據無法分佈式共享,無容錯處理;

2) 分佈式緩存系統:數據在固定數目的集羣節點間分佈存儲.優點是緩存容量可擴展(靜態擴展);缺點是擴展過程中需要大量配置,無容錯機制.典型的,如 Memcached;

3) 彈性緩存平臺:數據在集羣節點間分佈存儲,基於冗餘機制實現高可用性.優點是可動態擴展,具有容錯能力;缺點是複製備份會對系統性能造成一定影響.典型的,如 Windows Appfabric Caching;

4) 彈性應用平臺:彈性應用平臺代表了雲環境下分佈式緩存系統未來的發展方向.簡單地講,彈性應用平臺是彈性緩存與代碼執行的組合體,將業務邏輯代碼轉移到數據所在節點執行,可以極大地降低數據傳輸開銷,提升系統性能.典型的,如 GigaSpaces XAP.

1.4 分佈式緩存與NoSQL 

NoSQL 又稱爲Not Only Sql,主要是指非關係型、分佈式、支持水平擴展的數據庫設計模式.NoSQL 放棄了傳統關係型數據庫嚴格的事務一致性和範式約束,採用弱一致性模型.相對於NoSQL 系統,傳統數據庫難以滿足雲環境下應用數據的存儲需求,具體體現在以下3 個方面:

1) 根據CAP 理論,一致性(consistency)、可用性(availability)和分區容錯(partition tolerance)這3 個要素最多同時滿足兩個,不可能三者兼顧.對雲平臺中部署的大量Web 應用而言,數據可用性與分區容錯的優先級通常更高,所以一般會選擇適當放鬆一致性約束.傳統數據庫的事務一致性需求制約了其橫向伸縮與高可用技術的實現;

2) 傳統數據庫難以適應新的數據存儲訪問模式.Web 2.0 站點以及雲平臺中存在大量半結構化數據,如用戶Session 數據、時間敏感的事務型數據、計算密集型任務數據等,這些狀態數據更適合以Key/Value 形式存儲,不需要RDBMS 提供的複雜的查詢與管理功能;

3) NoSQL 提供低延時的讀寫速度,支持水平擴展,這些特性對擁有海量數據訪問請求的雲平臺而言是至關重要的.傳統關係型數據無法提供同樣的性能,而內存數據庫容量有限且不具備擴展能力.分佈式緩存作爲NoSQL 的一種重要實現形式,可爲雲平臺提供高可用的狀態存儲與可伸縮的應用加速服務,與其他NoSQL 系統間並無清晰的界限.平臺中應用訪問與系統故障均具有不可預知性,爲了更好地應對這些挑戰,應用軟件在架構時通常採用無狀態設計,大量狀態信息不再由組件、容器或平臺來管理,而是直接交  付給後端的分佈式緩存服務或NoSQL 系統.

1.5 分佈式緩存與極限事務處理 

隨着雲計算與 Web 2.0 的進一步發展,許多企業或組織時常會面對空前的需求:百萬級的併發用戶訪問、每秒數以千計的併發事務處理、靈活的彈性與可伸縮性、低延時及7×24×365 可用性等.傳統事務型應用面臨極限規模的併發事務處理,出現了極限事務處理型應用,典型的有鐵路售票系統.Wikipedia 認爲,極限事務處理是每秒多於500 事務或高於10 000 次併發訪問的事務處理[12].Gartner 將極限事務處理(extreme transactionprocessing,簡稱XTP)定義爲一種爲事務型應用的開發、部署、管理和維護供支持的應用模式,特點是對性能、可擴展性、可用性、可管理性等方面的極限需求.Gartner 在其報告中預測指出,極限事務處理型應用的規模將由2005 年的10%提升至2010 年的20%,極限事務處理技術是未來5 年~10 年的熱點技術.極限事務處理的引入,無疑給傳統Web 三層架構帶來了新的挑戰.即,如何在廉價的、標準化的硬件和軟件平臺之上,對大容量、業務關鍵型的事務處理應用提供良好的支撐.分佈式緩存作爲一種關鍵的XTP 技術,可爲事務型應用提供高吞吐率、低延時的技術解決方案.其延遲寫(write-behind)機制可提供更短的響應時間,同時極大地降低數據庫的事務處理負載,分階段事件驅動架構(staged event-driven architecture)可以支持大規模、高併發的事務處理請求.此外,分佈式緩存在內存中管理事務並提供數據的一致性保障,採用數據複製技術實現高可用性,具有較優的擴展性與性能組合.


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