本文將從理論的角度去介紹分布式緩存,在構(gòu)建大規(guī)模的web應(yīng)用時(shí),緩存技術(shù)可以說(shuō)是必備的,學(xué)習(xí)的必要性不言而喻。
創(chuàng)新互聯(lián)從2013年開(kāi)始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元昆明做網(wǎng)站,已為上家服務(wù),為昆明各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
分布式緩存概述
1.1 分布式緩存的特性
分布式緩存具有如下特性:
1) 高性能:當(dāng)傳統(tǒng)數(shù)據(jù)庫(kù)面臨大規(guī)模數(shù)據(jù)訪問(wèn)時(shí),磁盤I/O 往往成為性能瓶頸,從而導(dǎo)致過(guò)高的響應(yīng)延遲.分布式緩存將高速內(nèi)存作為數(shù)據(jù)對(duì)象的存儲(chǔ)介質(zhì),數(shù)據(jù)以key/value 形式存儲(chǔ),理想情況下可以獲得DRAM 級(jí)的讀寫性能;
2) 動(dòng)態(tài)擴(kuò)展性:支持彈性擴(kuò)展,通過(guò)動(dòng)態(tài)增加或減少節(jié)點(diǎn)應(yīng)對(duì)變化的數(shù)據(jù)訪問(wèn)負(fù)載,提供可預(yù)測(cè)的性能與擴(kuò)展性;同時(shí),最大限度地提高資源利用率;
3) 高可用性:可用性包含數(shù)據(jù)可用性與服務(wù)可用性兩方面.基于冗余機(jī)制實(shí)現(xiàn)高可用性,無(wú)單點(diǎn)失效(single point of failure),支持故障的自動(dòng)發(fā)現(xiàn),透明地實(shí)施故障切換,不會(huì)因服務(wù)器故障而導(dǎo)致緩存服務(wù)中斷或數(shù)據(jù)丟失.動(dòng)態(tài)擴(kuò)展時(shí)自動(dòng)均衡數(shù)據(jù)分區(qū),同時(shí)保障緩存服務(wù)持續(xù)可用;
4) 易用性:提供單一的數(shù)據(jù)與管理視圖;API 接口簡(jiǎn)單,且與拓?fù)浣Y(jié)構(gòu)無(wú)關(guān);動(dòng)態(tài)擴(kuò)展或失效恢復(fù)時(shí)無(wú)需人工配置;自動(dòng)選取備份節(jié)點(diǎn);多數(shù)緩存系統(tǒng)提供了圖形化的管理控制臺(tái),便于統(tǒng)一維護(hù);
1.2 典型應(yīng)用場(chǎng)景
分布式緩存的典型應(yīng)用場(chǎng)景可分為以下幾類:
1) 頁(yè)面緩存.用來(lái)緩存Web 頁(yè)面的內(nèi)容片段,包括HTML、CSS 和圖片等,多應(yīng)用于社交網(wǎng)站等;
2) 應(yīng)用對(duì)象緩存.緩存系統(tǒng)作為ORM 框架的二級(jí)緩存對(duì)外提供服務(wù),目的是減輕數(shù)據(jù)庫(kù)的負(fù)載壓力,加速應(yīng)用訪問(wèn);
3) 狀態(tài)緩存.緩存包括Session 會(huì)話狀態(tài)及應(yīng)用橫向擴(kuò)展時(shí)的狀態(tài)數(shù)據(jù)等,這類數(shù)據(jù)一般是難以恢復(fù)的,對(duì)可用性要求較高,多應(yīng)用于高可用集群;
4) 并行處理.通常涉及大量中間計(jì)算結(jié)果需要共享;
5) 事件處理.分布式緩存提供了針對(duì)事件流的連續(xù)查詢(continuous query)處理技術(shù),滿足實(shí)時(shí)性需求;
6) 極限事務(wù)處理.分布式緩存為事務(wù)型應(yīng)用提供高吞吐率、低延時(shí)的解決方案,支持高并發(fā)事務(wù)請(qǐng)求處理,多應(yīng)用于鐵路、金融服務(wù)和電信等領(lǐng)域.
1.3 分布式緩存的發(fā)展
分布式緩存經(jīng)歷了多個(gè)發(fā)展階段,由最初的本地緩存到彈性緩存平臺(tái)直至彈性應(yīng)用平臺(tái)[8],目標(biāo)是朝著構(gòu)建更好的分布式系統(tǒng)方向發(fā)展(如下圖所示).
1) 本地緩存:數(shù)據(jù)存儲(chǔ)在應(yīng)用代碼所在內(nèi)存空間.優(yōu)點(diǎn)是可以提供快速的數(shù)據(jù)訪問(wèn);缺點(diǎn)是數(shù)據(jù)無(wú)法分布式共享,無(wú)容錯(cuò)處理;
2) 分布式緩存系統(tǒng):數(shù)據(jù)在固定數(shù)目的集群節(jié)點(diǎn)間分布存儲(chǔ).優(yōu)點(diǎn)是緩存容量可擴(kuò)展(靜態(tài)擴(kuò)展);缺點(diǎn)是擴(kuò)展過(guò)程中需要大量配置,無(wú)容錯(cuò)機(jī)制.典型的,如 Memcached;
3) 彈性緩存平臺(tái):數(shù)據(jù)在集群節(jié)點(diǎn)間分布存儲(chǔ),基于冗余機(jī)制實(shí)現(xiàn)高可用性.優(yōu)點(diǎn)是可動(dòng)態(tài)擴(kuò)展,具有容錯(cuò)能力;缺點(diǎn)是復(fù)制備份會(huì)對(duì)系統(tǒng)性能造成一定影響.典型的,如 Windows Appfabric Caching;
4) 彈性應(yīng)用平臺(tái):彈性應(yīng)用平臺(tái)代表了云環(huán)境下分布式緩存系統(tǒng)未來(lái)的發(fā)展方向.簡(jiǎn)單地講,彈性應(yīng)用平臺(tái)是彈性緩存與代碼執(zhí)行的組合體,將業(yè)務(wù)邏輯代碼轉(zhuǎn)移到數(shù)據(jù)所在節(jié)點(diǎn)執(zhí)行,可以極大地降低數(shù)據(jù)傳輸開(kāi)銷,提升系統(tǒng)性能.典型的,如 GigaSpaces XAP.
1.4 分布式緩存與NOSQL
NoSQL 又稱為Not Only Sql,主要是指非關(guān)系型、分布式、支持水平擴(kuò)展的數(shù)據(jù)庫(kù)設(shè)計(jì)模式.NoSQL 放棄了傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)嚴(yán)格的事務(wù)一致性和范式約束,采用弱一致性模型.相對(duì)于NoSQL 系統(tǒng),傳統(tǒng)數(shù)據(jù)庫(kù)難以滿足云環(huán)境下應(yīng)用數(shù)據(jù)的存儲(chǔ)需求,具體體現(xiàn)在以下3 個(gè)方面:
1) 根據(jù)CAP 理論,一致性(consistency)、可用性(availability)和分區(qū)容錯(cuò)(partition tolerance)這3 個(gè)要素最多同時(shí)滿足兩個(gè),不可能三者兼顧.對(duì)云平臺(tái)中部署的大量Web 應(yīng)用而言,數(shù)據(jù)可用性與分區(qū)容錯(cuò)的優(yōu)先級(jí)通常更高,所以一般會(huì)選擇適當(dāng)放松一致性約束.傳統(tǒng)數(shù)據(jù)庫(kù)的事務(wù)一致性需求制約了其橫向伸縮與高可用技術(shù)的實(shí)現(xiàn);
2) 傳統(tǒng)數(shù)據(jù)庫(kù)難以適應(yīng)新的數(shù)據(jù)存儲(chǔ)訪問(wèn)模式.Web 2.0 站點(diǎn)以及云平臺(tái)中存在大量半結(jié)構(gòu)化數(shù)據(jù),如用戶Session 數(shù)據(jù)、時(shí)間敏感的事務(wù)型數(shù)據(jù)、計(jì)算密集型任務(wù)數(shù)據(jù)等,這些狀態(tài)數(shù)據(jù)更適合以Key/Value 形式存儲(chǔ),不需要RDBMS 提供的復(fù)雜的查詢與管理功能;
3) NoSQL 提供低延時(shí)的讀寫速度,支持水平擴(kuò)展,這些特性對(duì)擁有海量數(shù)據(jù)訪問(wèn)請(qǐng)求的云平臺(tái)而言是至關(guān)重要的.傳統(tǒng)關(guān)系型數(shù)據(jù)無(wú)法提供同樣的性能,而內(nèi)存數(shù)據(jù)庫(kù)容量有限且不具備擴(kuò)展能力.分布式緩存作為NoSQL 的一種重要實(shí)現(xiàn)形式,可為云平臺(tái)提供高可用的狀態(tài)存儲(chǔ)與可伸縮的應(yīng)用加速服務(wù),與其他NoSQL 系統(tǒng)間并無(wú)清晰的界限.平臺(tái)中應(yīng)用訪問(wèn)與系統(tǒng)故障均具有不可預(yù)知性,為了更好地應(yīng)對(duì)這些挑戰(zhàn),應(yīng)用軟件在架構(gòu)時(shí)通常采用無(wú)狀態(tài)設(shè)計(jì),大量狀態(tài)信息不再由組件、容器或平臺(tái)來(lái)管理,而是直接交 付給后端的分布式緩存服務(wù)或NoSQL 系統(tǒng).
1.5 分布式緩存與極限事務(wù)處理
隨著云計(jì)算與 Web 2.0 的進(jìn)一步發(fā)展,許多企業(yè)或組織時(shí)常會(huì)面對(duì)空前的需求:百萬(wàn)級(jí)的并發(fā)用戶訪問(wèn)、每秒數(shù)以千計(jì)的并發(fā)事務(wù)處理、靈活的彈性與可伸縮性、低延時(shí)及7×24×365 可用性等.傳統(tǒng)事務(wù)型應(yīng)用面臨極限規(guī)模的并發(fā)事務(wù)處理,出現(xiàn)了極限事務(wù)處理型應(yīng)用,典型的有鐵路售票系統(tǒng).Wikipedia 認(rèn)為,極限事務(wù)處理是每秒多于500 事務(wù)或高于10 000 次并發(fā)訪問(wèn)的事務(wù)處理[12].Gartner 將極限事務(wù)處理(extreme transactionprocessing,簡(jiǎn)稱XTP)定義為一種為事務(wù)型應(yīng)用的開(kāi)發(fā)、部署、管理和維護(hù)供支持的應(yīng)用模式,特點(diǎn)是對(duì)性能、可擴(kuò)展性、可用性、可管理性等方面的極限需求.Gartner 在其報(bào)告中預(yù)測(cè)指出,極限事務(wù)處理型應(yīng)用的規(guī)模將由2005 年的10%提升至2010 年的20%,極限事務(wù)處理技術(shù)是未來(lái)5 年~10 年的熱點(diǎn)技術(shù).極限事務(wù)處理的引入,無(wú)疑給傳統(tǒng)Web 三層架構(gòu)帶來(lái)了新的挑戰(zhàn).即,如何在廉價(jià)的、標(biāo)準(zhǔn)化的硬件和軟件平臺(tái)之上,對(duì)大容量、業(yè)務(wù)關(guān)鍵型的事務(wù)處理應(yīng)用提供良好的支撐.分布式緩存作為一種關(guān)鍵的XTP 技術(shù),可為事務(wù)型應(yīng)用提供高吞吐率、低延時(shí)的技術(shù)解決方案.其延遲寫(write-behind)機(jī)制可提供更短的響應(yīng)時(shí)間,同時(shí)極大地降低數(shù)據(jù)庫(kù)的事務(wù)處理負(fù)載,分階段事件驅(qū)動(dòng)架構(gòu)(staged event-driven architecture)可以支持大規(guī)模、高并發(fā)的事務(wù)處理請(qǐng)求.此外,分布式緩存在內(nèi)存中管理事務(wù)并提供數(shù)據(jù)的一致性保障,采用數(shù)據(jù)復(fù)制技術(shù)實(shí)現(xiàn)高可用性,具有較優(yōu)的擴(kuò)展性與性能組合.