天天看點

分布式緩存那些事兒

在前面的一些文章中,從實戰的角度,講解了有關memcached的應用、容災、監控等等。但是缺乏對理論的講解和原理性的剖析。本文将從理論的角度去介紹,讓大家從宏觀上對“分布式緩存、nosql”等技術有所了解,以便進一步學習和使用。在建構大規模的web應用時,緩存技術可以說是必備的,學習的必要性不言而喻。

分布式緩存概述

1.1 分布式緩存的特性

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

1) 高性能:當傳統資料庫面臨大規模資料通路時,磁盤I/O 往往成為性能瓶頸,進而導緻過高的響應延遲.分布式緩存将高速記憶體作為資料對象的存儲媒體,資料以key/value 形式存儲,理想情況下可以獲得DRAM 級的讀寫性能;

2) 動态擴充性:支援彈性擴充,通過動态增加或減少節點應對變化的資料通路負載,提供可預測的性能與擴充性;同時,最大限度地提高資源使用率;

3) 高可用性:可用性包含資料可用性與服務可用性兩方面.基于備援機制實作高可用性,無單點失效(single point of failure),支援故障的自動發現,透明地實施故障切換,不會因伺服器故障而導緻緩存服務中斷或資料丢失.動态擴充時自動均衡資料分區,同時保障緩存服務持續可用;

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

5) 分布式代碼執行(distributed code execution):将任務代碼轉移到各資料節點并行執行,用戶端聚合傳回結果,進而有效避免了緩存資料的移動與傳輸.最新的Java 資料網格規範JSR-347中加入了分布式代碼執行與Map/reduce 的API 支援,各主流分布式緩存産品,如IBM WebSphere eXtreme Scale,VMware GemFire,GigaSpaces XAP 和Red Hat Infinispan 等也都支援這一新的程式設計模型.

1.2 典型應用場景

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

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

2) 應用對象緩存.緩存系統作為ORM 架構的二級緩存對外提供服務,目的是減輕資料庫的負載壓力,加速應用通路;

3) 狀态緩存.緩存包括Session 會話狀态及應用橫向擴充時的狀态資料等,這類資料一般是難以恢複的,對可用性要求較高,多應用于高可用叢集;

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

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

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

1.3 分布式緩存的發展

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

1) 本地緩存:資料存儲在應用代碼所在記憶體空間.優點是可以提供快速的資料通路;缺點是資料無法分布式共享,無容錯處理.典型的,如Cache4j;

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 次并發通路的事務處理.Gartner 将極限事務處理(extreme transactionprocessing,簡稱XTP)定義為一種為事務型應用的開發、部署、管理和維護供支援的應用模式,特點是對性能、可擴充性、可用性、可管理性等方面的極限需求.Gartner 在其報告中預測指出,極限事務處理型應用的規模将由2005 年的10%提升至2010 年的20%,極限事務處理技術是未來5 年~10 年的熱點技術.極限事務處理的引入,無疑給傳統Web 三層架構帶來了新的挑戰.即,如何在廉價的、标準化的硬體和軟體平台之上,對大容量、業務關鍵型的事務處理應用提供良好的支撐.分布式緩存作為一種關鍵的XTP 技術,可為事務型應用提供高吞吐率、低延時的技術解決方案.其延遲寫(write-behind)機制可提供更短的響應時間,同時極大地降低資料庫的事務處理負載,分階段事件驅動架構(staged event-driven architecture)可以支援大規模、高并發的事務處理請求.此外,分布式緩存在記憶體中管理事務并提供資料的一緻性保障,采用資料複制技術實作高可用性,具有較優的擴充性與性能組合.

分布式緩存那些事兒
分布式緩存那些事兒
分布式緩存那些事兒

  相關文章推薦

<a href="http://blog.csdn.net/dinglang_2009/article/details/7013460">memcached性能監控</a>

<a href="http://blog.csdn.net/dinglang_2009/article/details/6917794">在Windows .NET平台下使用Memcached</a>