段春梅
摘 要:隨著云計(jì)算和大數(shù)據(jù)時(shí)代的到來,在滿足用戶對(duì)系統(tǒng)訪問量、訪問速度、訪問安全的要求的同時(shí),系統(tǒng)必須實(shí)時(shí)準(zhǔn)確的處理迅猛增長(zhǎng)的海量數(shù)據(jù),而傳統(tǒng)的緩存技術(shù)無法滿足海量數(shù)據(jù)處理和用戶高并發(fā)訪問的需求。分布式緩存技術(shù)是最好的高性能緩存解決方案。本文研究如何利用云計(jì)算下分布式緩存技術(shù)在海量數(shù)據(jù)處理平臺(tái)中解決該問題,分析研究了分布式緩存的關(guān)鍵技術(shù)、分布式緩存的一致性和分布式內(nèi)存數(shù)據(jù)管理。在此基礎(chǔ)上,分析并設(shè)計(jì)了分布式緩存系統(tǒng)的部署和整體架構(gòu)。并將該分布式緩存系統(tǒng)的設(shè)計(jì)模式應(yīng)用在某團(tuán)購網(wǎng)上,行了POC測(cè)試。測(cè)試結(jié)果證明分布式緩存技術(shù)可以緩解服務(wù)器的壓力,解決海量數(shù)據(jù)和超高并發(fā)數(shù)據(jù)訪問所帶來的問題,提升了系統(tǒng)的性能、訪問速度、可靠性以及降低響應(yīng)延遲。
關(guān)鍵詞:分布式緩存技術(shù);海量數(shù)據(jù);分布式內(nèi)存數(shù)據(jù)管理;驗(yàn)證性測(cè)試
中圖分類號(hào):TP393.4 文獻(xiàn)標(biāo)識(shí)號(hào):A 文章編號(hào):2095-2163(2016)01-
Abstract:With the advent of the era of Cloud Computing and big data, massive data increased rapidly must be real-time accurately processed by the system, and requirements of visits to the system、access speed and access security to users are meeted at the same time, but Traditional caching technology can't meet the needs of massive data processing and high concurrent access to the users. Distributed caching t techniques is one of the best solution of high-performance cache.How to solve the problems in the mass data processing platform using distributed cache techniques of cloud computing is researched,and the key technology of distributed cache, consistency of distributed cache and distributed memory data management are also explored. Based on the aboved, deployment of distributed cache system and the overall architecture are analyzed and designed.And the design mode of the distributed cache system is used in the group buying site, and be tested by POC. Test results show that distributed cache techniques can alleviate the pressure of the server, solve the problems of massive data and high concurrent data access, and improve performance and access speed adn reliability of the system, simultaneously reduce the response delay.
Key words: distributed cache techniques;massive data;distributed memory data management;POC test
0 引言
隨著云計(jì)算的發(fā)展,越來越多的企業(yè)都會(huì)搭建自己的云平臺(tái),同時(shí)越來越多的應(yīng)用程序都是以云平臺(tái)為支撐,為用戶提供云服務(wù)。隨著互聯(lián)網(wǎng)上應(yīng)用系統(tǒng)的訪問用戶增加、某些電子商務(wù)網(wǎng)站特定時(shí)間的促銷活動(dòng)而引發(fā)的特大規(guī)模的數(shù)據(jù)等等,使得在云服務(wù)普及推廣的同時(shí),數(shù)據(jù)訪問量、訪問速度、訪問安全的需求都在急劇增加,而云計(jì)算的分布式處理、分布式數(shù)據(jù)庫和云存儲(chǔ)、虛擬化技術(shù)為海量數(shù)據(jù)進(jìn)行分析處理提供了技術(shù)支持和基本保證。同時(shí)用戶對(duì)云服務(wù)的數(shù)據(jù)提交及服務(wù)響應(yīng)的時(shí)限要求也日漸提升,因而針對(duì)海量數(shù)據(jù)的數(shù)據(jù)庫高并發(fā)訪問的現(xiàn)實(shí)解決處理則需要立足于有關(guān)分布式緩存技術(shù)的先導(dǎo)性研究和關(guān)聯(lián)式內(nèi)容整合基礎(chǔ)之上的。本文即圍繞這一課題內(nèi)容展開如下設(shè)計(jì)論述。
1 分布式緩存技術(shù)
分布式緩存技術(shù)可以解決數(shù)據(jù)庫服務(wù)器和應(yīng)用服務(wù)器之間的瓶頸問題,提高對(duì)數(shù)據(jù)的訪問速度。分布式緩存的思想是分而治之,將數(shù)據(jù)分別布設(shè)到多個(gè)緩沖服務(wù)器上,使用緩存陣列路由協(xié)議,如此即使得多臺(tái)緩存服務(wù)器形同一臺(tái),對(duì)外統(tǒng)一數(shù)據(jù)的訪問接口,從而產(chǎn)生一種高效率無接縫式的緩存。
分布式緩存具有高性能、動(dòng)態(tài)擴(kuò)展性、易用性、高可用性、分布式代碼執(zhí)行等特點(diǎn)。而且為了解決大并發(fā)下的性能問題,同時(shí)避免過高的響應(yīng)延遲,分布式緩存拋棄原始的關(guān)系型數(shù)據(jù)庫,采用key/value 形式存儲(chǔ)數(shù)據(jù),同時(shí)配以高速內(nèi)存作為存儲(chǔ)介質(zhì),這樣可以保證系統(tǒng)的高性能性、動(dòng)態(tài)可擴(kuò)展性。不僅如此,分布式緩存又采用NRW多副本機(jī)制,避免緩存的單點(diǎn)故障問題,從而在提高數(shù)據(jù)訪問速度的基礎(chǔ)上,進(jìn)一步保證數(shù)據(jù)的可靠性、最終數(shù)據(jù)一致性。分布式緩存系統(tǒng)還應(yīng)實(shí)現(xiàn)數(shù)據(jù)冗余機(jī)制,藉此最終保證系統(tǒng)的安全性。
分布式key/value內(nèi)存數(shù)據(jù)庫大多通過在客戶端充分發(fā)揮分布式邏輯功能來有效實(shí)現(xiàn)多種數(shù)據(jù)類型的分布式緩存,使用內(nèi)存數(shù)據(jù)庫可以顯著提高數(shù)據(jù)訪問速度及系統(tǒng)性能。常見的分布式key/value數(shù)據(jù)庫內(nèi)存緩存系統(tǒng)有Oracle Coherence、dbcached、IBM WebSphere eXtreme Scale、Redis、Memcached、Vmware Gemfire、MemCache[1]等。
1.1 數(shù)據(jù)分區(qū)
數(shù)據(jù)分區(qū)中經(jīng)常使用的就是一致性哈希算法。一致性哈希算法(Consistent Hashing),最早由麻省理工學(xué)院于1997年提出,主要用于解決因特網(wǎng)中熱點(diǎn)問題。時(shí)下,一致性哈希算法更多見于數(shù)據(jù)分布式技術(shù)中。分布式緩存中的一致性哈希算法的主要原理是:計(jì)算出緩存服務(wù)器各個(gè)節(jié)點(diǎn)的哈希值,將其包含的所有緩存服務(wù)器節(jié)點(diǎn)抽象為一個(gè)環(huán)即哈希環(huán),再將根據(jù)哈希函數(shù)計(jì)算出的緩存服務(wù)器哈希值分配到哈希環(huán)中,該環(huán)的數(shù)值域?yàn)?~232-1。然后對(duì)緩存的數(shù)據(jù)對(duì)象進(jìn)行哈希計(jì)算,并分配到哈希環(huán)上。最后按順時(shí)針方向?qū)⒕彺鏀?shù)據(jù)對(duì)象映射到離其最近的緩存服務(wù)器節(jié)點(diǎn)上去。若增加或減少緩存服務(wù)器,則只需要局部改變?cè)摼彺娣?wù)器逆時(shí)針方向的緩存數(shù)據(jù)位置即可。
在緩存數(shù)據(jù)較少的情況下,數(shù)據(jù)對(duì)象可能無法均勻分布,而且緩存服務(wù)器集群里的服務(wù)器的性能和容量也可能未獲統(tǒng)一,此時(shí)為了保證絕對(duì)的平衡,一致性哈希算法就相應(yīng)引入了“虛擬節(jié)點(diǎn)”,一個(gè)物理的緩存服務(wù)器節(jié)點(diǎn)將根據(jù)自身性能對(duì)應(yīng)了若干個(gè)“虛擬節(jié)點(diǎn)”,從而緩解物理服務(wù)節(jié)點(diǎn)少時(shí)數(shù)據(jù)傾斜等負(fù)載不均衡問題的發(fā)生,從而實(shí)現(xiàn)了數(shù)據(jù)的均勻分布[2-3]。
1.2 分布式緩存的一致性
分布式緩存可以提高數(shù)據(jù)讀取速度,降低數(shù)據(jù)讀取延遲時(shí)間、減輕服務(wù)器負(fù)載壓力,因而在整體上優(yōu)化了系統(tǒng)可靠性;雖然能夠獲得良好的讀取性能,但在更新數(shù)據(jù)時(shí)卻會(huì)存在重大的數(shù)據(jù)不一致的風(fēng)險(xiǎn),由此導(dǎo)致數(shù)據(jù)臟讀等現(xiàn)象出現(xiàn)。為了保證客戶端總能讀到最新的數(shù)據(jù),分布式緩存可以通過多副本機(jī)制(NRW)和租約機(jī)制(Leases)來支持實(shí)現(xiàn)分布式緩存數(shù)據(jù)的一致性;而在達(dá)成此一目的的過程中,分布式緩存系統(tǒng)卻要因所采取的相應(yīng)措施而支付一定的開銷,這就可能降低系統(tǒng)的性能,所以即需要在系統(tǒng)的可靠性、高性能和數(shù)據(jù)一致性問題上取得平衡。綜上可知,為解決數(shù)據(jù)一致性問題,就需要考慮數(shù)據(jù)讀取/更新流程、數(shù)據(jù)同步、副本問題等。分布式系統(tǒng)中對(duì)于數(shù)據(jù)的存儲(chǔ)將支持采用多副本機(jī)制,即采用多份數(shù)據(jù)副本存放在不同節(jié)點(diǎn)上, 每個(gè)物理緩存服務(wù)器上存儲(chǔ)自身的緩存數(shù)據(jù)以及其他節(jié)點(diǎn)的熱備數(shù)據(jù),讀取或者更新數(shù)據(jù)時(shí)將需要對(duì)多個(gè)副本進(jìn)行同時(shí)操作;分布式緩存系統(tǒng)也提供了輪詢操作,可以每隔一定時(shí)間輪詢數(shù)據(jù)庫,并在更新數(shù)據(jù)時(shí)進(jìn)行數(shù)據(jù)同步,讀取數(shù)據(jù)更新后的全新副本。
Quorum的NRW機(jī)制當(dāng)中,N代表數(shù)據(jù)的所有副本數(shù),R代表示完成一次成功的讀操作所需要讀取的最小副本數(shù),W代表完成一次寫操作所需要寫入的最小副本數(shù)。在NRW多副本機(jī)制中,只要滿足R + W>N條件,就保證了數(shù)據(jù)不同副本中的一致性,因此R和W的設(shè)置是否合理則將影響系統(tǒng)的性能和數(shù)據(jù)的一致性,而Quorum機(jī)制卻具備了更新數(shù)據(jù)時(shí)減少需要即刻完成的副本數(shù),讀取數(shù)據(jù)增加需要讀取的副本數(shù),即讀寫操作的平衡擴(kuò)展功能,從而保證了系統(tǒng)性能的提高和數(shù)據(jù)的一致性[4]。
1.3 分布式內(nèi)存數(shù)據(jù)管理
Oracle Coherence是Oracle提供的一款適用于應(yīng)用層的集群數(shù)據(jù)管理和分布式內(nèi)存數(shù)據(jù)管理的現(xiàn)實(shí)理想解決方案。Coherence可以提供完善的讀取性能、極低的延遲時(shí)間、高吞吐量、數(shù)據(jù)可靠性、100%的事務(wù)完整性、容錯(cuò)性、良好的動(dòng)態(tài)可擴(kuò)展性、持續(xù)的可用性、并行處理、支持鎖和事務(wù)處理、自動(dòng)代理服務(wù)和動(dòng)態(tài)負(fù)載均和支持超級(jí)大容量的緩存等強(qiáng)大的功能。
對(duì)于由Coherence組成的緩存服務(wù)器集群,其集群的節(jié)點(diǎn)的地位不分主次,可以自動(dòng)執(zhí)行集群節(jié)點(diǎn)的檢測(cè)和刪除,節(jié)點(diǎn)之間采用P2P協(xié)議進(jìn)行數(shù)據(jù)通信。Coherence能夠?qū)崿F(xiàn)集群管理,并提供各種緩存服務(wù)。數(shù)據(jù)存儲(chǔ)在Coherence緩存當(dāng)中,集群當(dāng)中的每個(gè)節(jié)點(diǎn)都會(huì)備份全部數(shù)據(jù),所以Coherence集群呈現(xiàn)有出眾的可靠性,只要有一個(gè)節(jié)點(diǎn)能正常運(yùn)行,就能保證系統(tǒng)不致癱瘓,但其缺點(diǎn)卻是更新速度相對(duì)而言較差。
Coherence設(shè)有兩個(gè)非常重要的配置文件,分別是:緩存配置文件和運(yùn)行配置文件。其中,緩存配置文件,用于配置緩存的類型及模式、緩存策略、服務(wù)的分配等信息。運(yùn)行配置文件則用于緩存集群配置文件路徑、日志配置文件路徑、緩存數(shù)據(jù)配置文件路徑、并進(jìn)一步具體設(shè)定集群配置文件及集群的通信、服務(wù)機(jī)構(gòu)組成等信息[5-[6]。
2 分布式緩存模式設(shè)計(jì)
為了滿足網(wǎng)站高并發(fā)訪問,搭建一個(gè)由多臺(tái)分布式緩存服務(wù)器組成的分布式緩存服務(wù)器集群,該集群結(jié)構(gòu)采用無主架構(gòu),服務(wù)器節(jié)點(diǎn)地位不分主次,數(shù)據(jù)均勻分布在集群各服務(wù)器節(jié)點(diǎn)上,節(jié)點(diǎn)數(shù)越多,其數(shù)據(jù)處理能力也越強(qiáng)。分布式緩存服務(wù)器提供支持該緩存服務(wù)器通信協(xié)議的客戶端,通過客戶端可以與分布式緩存服務(wù)器進(jìn)行通信以及相關(guān)操作。其現(xiàn)實(shí)通用的分布式緩存系統(tǒng)的部署設(shè)計(jì)則如圖1所示[5]。
由圖1可見,該分布式緩存部署設(shè)計(jì)的優(yōu)勢(shì)特點(diǎn)可做如下描述:
(1)將程序應(yīng)用與緩存分開部署,緩存系統(tǒng)部署在緩存服務(wù)器集群上,可通過增加緩存服務(wù)器節(jié)點(diǎn)自動(dòng)在線擴(kuò)展集群規(guī)模,具有良好的可伸縮性。
(2)一般分布式緩存系統(tǒng)支撐多種語言客戶端,在應(yīng)用服務(wù)器上可以開發(fā)出豐富多樣的應(yīng)用程序客戶端,并通過一致性哈希算法等路由算法將數(shù)據(jù)均勻分散到不同的緩存服務(wù)器節(jié)點(diǎn)上,而且自動(dòng)在其它節(jié)點(diǎn)生成備份,或者選擇不同的緩存服務(wù)器遠(yuǎn)程實(shí)現(xiàn)訪問該緩存服務(wù)器上的數(shù)據(jù)。
(3)在緩存服務(wù)器集群中,若某緩存服務(wù)器節(jié)點(diǎn)故障則會(huì)自動(dòng)啟用其它節(jié)點(diǎn)的備份數(shù)據(jù),保障服務(wù)器集群系統(tǒng)能正常運(yùn)行。同樣,可以根據(jù)需要?jiǎng)討B(tài)增加或減少緩存服務(wù)器節(jié)點(diǎn),提高資源利用率。
(4)在分布式緩存系統(tǒng)中,盡量只讀緩存數(shù)據(jù),因?yàn)榫彺娌贿m合大量寫和更新操作。緩存系統(tǒng)在設(shè)計(jì)時(shí)盡量做到讀寫分離。
綜合考慮分布式緩存的功能以及分布式內(nèi)存數(shù)據(jù)的模型原理體系結(jié)構(gòu),通過zookeeper分布式服務(wù)協(xié)調(diào)機(jī)制獲得了具體有效的整合,從而實(shí)現(xiàn)一個(gè)分布式緩存架構(gòu)。分布式緩存整體架構(gòu)圖如圖2所示[7]。
3 分布式緩存數(shù)據(jù)處理系統(tǒng)的測(cè)試
分布式緩存技術(shù)已然廣泛地應(yīng)用在海量數(shù)據(jù)處理平臺(tái)中,并且尤其著重支持高并發(fā)、高訪問量、低延遲的讀多更新少的數(shù)據(jù)處理系統(tǒng)。本文針對(duì)分布式緩存技術(shù)在海量數(shù)據(jù)處理平臺(tái)中的應(yīng)用測(cè)試則是以某團(tuán)購網(wǎng)的查詢功能作為實(shí)例背景而進(jìn)行系統(tǒng)展開,并獲取研究結(jié)果和結(jié)論的。
本次測(cè)試主要針對(duì)團(tuán)購商品的模糊查詢、規(guī)則引擎應(yīng)用、訂單查詢等典型的使用分布式緩存的應(yīng)用場(chǎng)景進(jìn)行分布式緩存POC測(cè)試。測(cè)試的內(nèi)容包括功能測(cè)試、性能測(cè)試和可靠性測(cè)試。
針對(duì)團(tuán)購網(wǎng)實(shí)際使用場(chǎng)景,構(gòu)造測(cè)試案例對(duì)Coherence進(jìn)行功能、性能和可靠性測(cè)試。首先是測(cè)試環(huán)境的搭建,其中包括在機(jī)器的ip地址上建立服務(wù)器集群主控環(huán)境。本次測(cè)試采用一臺(tái)http服務(wù)器,兩臺(tái)分布式緩存服務(wù)器,而http服務(wù)器端采用Java客戶端進(jìn)行測(cè)試,緩存服務(wù)器采用Oracle Coherence[8]。
(1)針對(duì)團(tuán)購網(wǎng)的商品模糊查詢?yōu)槔M(jìn)行POC測(cè)試,其測(cè)試的記錄數(shù)為7 200 000,Cache實(shí)例數(shù)為40 * 2,每個(gè)實(shí)例Java heap size為2gb。查詢的輸入為:并發(fā)數(shù)(用戶個(gè)數(shù)*每個(gè)用戶的讀取次數(shù)),輸出為平均每次讀取的時(shí)間,實(shí)際的測(cè)試結(jié)果如表1所示。其中CPU的最大使用率可達(dá)41%,而其平均使用率則為35%。
(2)針對(duì)分布式緩存系統(tǒng)環(huán)境進(jìn)行可靠性測(cè)試,包括各緩存節(jié)點(diǎn)的數(shù)據(jù)恢復(fù)及數(shù)據(jù)完整性測(cè)試。首先進(jìn)行測(cè)試的是針對(duì)無任何操作前提下,刪除或者增加一個(gè)緩存實(shí)例,數(shù)據(jù)恢復(fù)所需要的時(shí)間,然后運(yùn)行商品模糊查詢測(cè)試時(shí),數(shù)據(jù)恢復(fù)所需要的時(shí)間。測(cè)試結(jié)果如表2所示。
可靠性的測(cè)試還包括緩存節(jié)點(diǎn)的完整性測(cè)試,可以通過并行刪除多個(gè)緩存節(jié)點(diǎn)后,驗(yàn)證數(shù)據(jù)的完整性。通過POC測(cè)試可知:該分布式緩存系統(tǒng)能滿足應(yīng)用要求以及符合系統(tǒng)性能要求,采用的分布式內(nèi)存數(shù)據(jù)管理具備高可靠性和高擴(kuò)展性,包含強(qiáng)大的容錯(cuò)特性和支持服務(wù)器自我修復(fù)的功能。
4 結(jié)束語
隨著云計(jì)算的發(fā)展,通過物聯(lián)網(wǎng)和互聯(lián)網(wǎng)產(chǎn)生的數(shù)據(jù)呈幾何級(jí)數(shù)增長(zhǎng),同時(shí)網(wǎng)上用戶也在不斷大幅度增加,隨之而來的海量數(shù)據(jù)和用戶高并發(fā)訪問的問題對(duì)傳統(tǒng)的緩存提出了挑戰(zhàn)。針對(duì)這一狀況,本文研究如何利用云計(jì)算下分布式緩存技術(shù)在海量數(shù)據(jù)處理平臺(tái)中解決該問題,從而保證系統(tǒng)的高性能,高訪問速度,低延遲、高可靠性。首先分析研究了分布式緩存的關(guān)鍵技術(shù)、緩存替換策略、分布式緩存的一致性和分布式內(nèi)存數(shù)據(jù)管理。然后提出并論述了分布式緩存系統(tǒng)的部署和整體架構(gòu)設(shè)計(jì)。最后將該分布式緩存系統(tǒng)的設(shè)計(jì)模式應(yīng)用在某團(tuán)購網(wǎng)上,并進(jìn)行了POC測(cè)試,證明其可行性。
參考文獻(xiàn):
[1]崔解賓. 分布式內(nèi)存緩存技術(shù)在數(shù)據(jù)處理平臺(tái)中的研究與應(yīng)用[D].北京:北京郵電大學(xué),2015.
[2]黃菊. 分布式緩存技術(shù)及其在車輛監(jiān)控系統(tǒng)中的應(yīng)用[D].北京:北京郵電大學(xué),2015.
[3]張曉慧. 試析云計(jì)算分布式緩存技術(shù)在物聯(lián)網(wǎng)中的實(shí)施要點(diǎn)[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用,2014(15):50-51.
[4]高洪,董振江. 云計(jì)算分布式緩存技術(shù)及其在物聯(lián)網(wǎng)中的應(yīng)用[J]. 中興通訊技術(shù),2012,17(4):37-42.
[5]秦秀磊,張文博,魏峻,等. 云計(jì)算環(huán)境下分布式緩存技術(shù)的現(xiàn)狀與挑戰(zhàn)[J]. 軟件學(xué)報(bào),2013,24(1):50-66.
[6]梁德鋒.Oracle Coherence入門[Z]. 北京:百度文庫,2010.
[7]李玉玲, 張東旭, . 虛擬現(xiàn)實(shí)環(huán)境下的分布式服務(wù)器架構(gòu)策略研究[J/OL]. 計(jì)算機(jī)工程與應(yīng)用, http://www.cnki.net/kcms/detail/11.2127.TP.20150313.1547.009.html
[8]顧榮慶,楊開杰,徐汀榮. 分布式數(shù)據(jù)緩存技術(shù)研究[J]. 計(jì)算機(jī)應(yīng)用與軟件,2011,28(6):202-204.