国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群的關(guān)鍵技術(shù)研究*

2012-06-27 05:50:55張良王純李煒
關(guān)鍵詞:分片磁盤內(nèi)存

張良, 王純, 李煒

(1 北京郵電大學(xué)網(wǎng)絡(luò)與交換技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100876;2 東信北郵信息技術(shù)有限公司,北京 100191)

基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群的關(guān)鍵技術(shù)研究*

張良1,2, 王純1,2, 李煒1,2

(1 北京郵電大學(xué)網(wǎng)絡(luò)與交換技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100876;2 東信北郵信息技術(shù)有限公司,北京 100191)

基于磁盤數(shù)據(jù)庫(kù)的存儲(chǔ)集群由于內(nèi)外存交換開(kāi)銷過(guò)大,無(wú)法支撐數(shù)據(jù)的實(shí)時(shí)存儲(chǔ)與處理,因此使用基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群成為目前很多業(yè)務(wù)數(shù)據(jù)存儲(chǔ)的設(shè)計(jì)方案。本文主要研究了基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群中的數(shù)據(jù)庫(kù)代理、單點(diǎn)故障恢復(fù)等關(guān)鍵技術(shù)。

內(nèi)存數(shù)據(jù)庫(kù);存儲(chǔ)集群;數(shù)據(jù)庫(kù)代理;單點(diǎn)故障恢復(fù)

隨著Internet 技術(shù)的快速發(fā)展,接入網(wǎng)速度不斷提高,主干帶寬不斷擴(kuò)容,用戶規(guī)模不斷擴(kuò)大,傳統(tǒng)影響網(wǎng)絡(luò)速度的因素不斷減少,目前影響網(wǎng)絡(luò)速度的主要瓶頸集中在訪問(wèn)距離和服務(wù)器承載負(fù)荷能力方面。同時(shí),隨著網(wǎng)站訪問(wèn)量日漸增大、內(nèi)容不斷豐富和用戶期望值不斷提高,用戶應(yīng)用需要提供更快的訪問(wèn)速度和承受更大的負(fù)荷量,所有這些都依賴于網(wǎng)站服務(wù)器的基礎(chǔ)設(shè)施。目前,最常用的解決方案是采用像MySQL的磁盤數(shù)據(jù)存儲(chǔ)集群來(lái)處理海量數(shù)據(jù)的存儲(chǔ)和訪問(wèn),但這種解決方案存在的最大問(wèn)題是訪問(wèn)的效率不高,也成為服務(wù)器端的處理性能上的最大瓶頸,而目前常用的優(yōu)化方案是采用基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群架構(gòu)。

基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群既在數(shù)據(jù)存儲(chǔ)量上能滿足現(xiàn)有互聯(lián)網(wǎng)業(yè)務(wù)的需求,同時(shí),在訪問(wèn)性能上相較于磁盤數(shù)據(jù)庫(kù)有了很大提高。因此,采用基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群架構(gòu)基本滿足現(xiàn)有的海量數(shù)據(jù)、高并發(fā)系統(tǒng)的需要,也在互聯(lián)網(wǎng)業(yè)務(wù)中得到了廣泛的應(yīng)用。

1 存儲(chǔ)集群概述

存儲(chǔ)集群是指由若干個(gè)“通用存儲(chǔ)設(shè)備”組成的用于存儲(chǔ)的集群,組成集群存儲(chǔ)的每個(gè)存儲(chǔ)系統(tǒng)的性能和容量均可通過(guò)“集群”的方式得以疊加和擴(kuò)展。傳統(tǒng)的存儲(chǔ)系統(tǒng)由于受到諸如控制器性能,總線性能,磁盤驅(qū)動(dòng)器的數(shù)量,所連接服務(wù)器的數(shù)量,內(nèi)存大小,NAS(Network Attached Storage)頭的性能等物理組成的限制,以及諸如支持文件系統(tǒng)的容量,元數(shù)據(jù)和數(shù)據(jù)處理通路的耦合,快照或復(fù)制的數(shù)量等功能上的局限,造成了存儲(chǔ)系統(tǒng)瓶頸的出現(xiàn)。一旦遇到存儲(chǔ)系統(tǒng)的瓶頸,就會(huì)有兩種選擇:一是采用硬件更加強(qiáng)大的單個(gè)存儲(chǔ)系統(tǒng);二是采用若干個(gè)普通性能的存儲(chǔ)系統(tǒng)來(lái)組成“存儲(chǔ)的集群”?!凹骸弊鳛橐豁?xiàng)已被廣泛使用的體系結(jié)構(gòu),如果采用到存儲(chǔ)上組成“集群存儲(chǔ)”,就可提供按比例增加的存儲(chǔ)資源的性能、容量、可靠性及可用性,突破了單機(jī)設(shè)備的種種限制。

目前業(yè)內(nèi)常用的存儲(chǔ)集群基于的是諸如MySQL這樣的磁盤數(shù)據(jù)庫(kù),它的整體設(shè)計(jì)架構(gòu)相對(duì)簡(jiǎn)單,如圖1所示。

圖1 基于磁盤數(shù)據(jù)庫(kù)的存儲(chǔ)集群架構(gòu)

對(duì)于應(yīng)用程序來(lái)說(shuō),整個(gè)存儲(chǔ)集群架構(gòu)是透明的,應(yīng)用程序在查詢數(shù)據(jù)和更新數(shù)據(jù)時(shí),只需向數(shù)據(jù)庫(kù)代理發(fā)送請(qǐng)求,由數(shù)據(jù)庫(kù)代理向各個(gè)數(shù)據(jù)片執(zhí)行查詢和更新操作。當(dāng)然,各個(gè)分區(qū)片的分片規(guī)則和分片標(biāo)識(shí)等都是由數(shù)據(jù)庫(kù)代理決定。對(duì)于以MySQL作為數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)分片,其代理最常用的就是Amoeba(變形蟲),Amoeba是一款開(kāi)源軟件,是MySQL的分布式數(shù)據(jù)庫(kù)的前端代理,主要在應(yīng)用層訪問(wèn)MySQL時(shí)充當(dāng)SQL路由,能實(shí)現(xiàn)負(fù)載均衡、高可用性、SQL過(guò)濾、讀寫分離、可路由相關(guān)請(qǐng)求到目標(biāo)數(shù)據(jù)庫(kù)、可并發(fā)請(qǐng)求多臺(tái)數(shù)據(jù)庫(kù)并合并結(jié)果等功能。

這種框架雖然能夠解決大數(shù)據(jù)量存儲(chǔ)問(wèn)題,但是并發(fā)訪問(wèn)的性能并不高。因此,可以對(duì)此框架做修改,使用內(nèi)存數(shù)據(jù)庫(kù)來(lái)替代磁盤數(shù)據(jù)庫(kù)。當(dāng)然,對(duì)于復(fù)雜的業(yè)務(wù)邏輯數(shù)據(jù),使用key-value內(nèi)存數(shù)據(jù)庫(kù)不能滿足需求,在這種框架下,可以使用關(guān)系型的內(nèi)存數(shù)據(jù)庫(kù)。但是,因?yàn)閮?nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)的易失性,在發(fā)生單點(diǎn)故障時(shí)需要做數(shù)據(jù)的恢復(fù),因此內(nèi)存數(shù)據(jù)庫(kù)需要持久化和備份功能,具體的架構(gòu)如圖2所示。

圖2 基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群架構(gòu)

此框架是基于圖1框架的基礎(chǔ)上,添加了內(nèi)存數(shù)據(jù)庫(kù)層,從而解決了數(shù)據(jù)訪問(wèn)的性能問(wèn)題。同時(shí),對(duì)內(nèi)存數(shù)據(jù)庫(kù)定時(shí)的持久化,能確保在內(nèi)存數(shù)據(jù)庫(kù)故障時(shí),成功恢復(fù)內(nèi)存數(shù)據(jù)庫(kù)中的數(shù)據(jù)。同時(shí),內(nèi)存數(shù)據(jù)庫(kù)作為全量數(shù)據(jù)緩存與磁盤數(shù)據(jù)庫(kù)之間必須同步,保持兩者之間的數(shù)據(jù)一致性。

基于內(nèi)存數(shù)據(jù)庫(kù)的集群存儲(chǔ)的架構(gòu),是現(xiàn)有具有大量業(yè)務(wù)數(shù)據(jù)存儲(chǔ)和訪問(wèn)的系統(tǒng)的比較理想的解決方案。本文主要研究此架構(gòu)中的關(guān)鍵技術(shù)包括分布式數(shù)據(jù)庫(kù)代理和單點(diǎn)故障恢復(fù)。

2 分布式數(shù)據(jù)庫(kù)代理

在基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群中,數(shù)據(jù)庫(kù)代理通常分為兩類,一類是內(nèi)存數(shù)據(jù)庫(kù)自帶的,這種內(nèi)存數(shù)據(jù)庫(kù)本身就具有集群功能,例如Mongodb,它的分片集群就是很好的存儲(chǔ)集群架構(gòu),只需要做相應(yīng)的配置即可;另一類就如MySQL集群一樣,使用的是獨(dú)立的分布式數(shù)據(jù)庫(kù)代理。不管使用哪類數(shù)據(jù)庫(kù)代理,都必須具有前端路由、數(shù)據(jù)分片、負(fù)載均衡等功能。前端路由功能是指當(dāng)應(yīng)用程序向存儲(chǔ)集群發(fā)起數(shù)據(jù)更新或者查詢操作時(shí),數(shù)據(jù)庫(kù)代理會(huì)接收請(qǐng)求,并向相應(yīng)的分片節(jié)點(diǎn)中發(fā)送相應(yīng)的操作;而數(shù)據(jù)分片是在應(yīng)用程序向存儲(chǔ)集群插入數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)代理通過(guò)散列或者其它策略,指定到某個(gè)分片節(jié)點(diǎn)上存儲(chǔ)數(shù)據(jù);負(fù)載均衡是指數(shù)據(jù)庫(kù)代理要做到各個(gè)分片節(jié)點(diǎn)被訪問(wèn)的次數(shù)以及占據(jù)的數(shù)據(jù)量達(dá)到一個(gè)平衡狀態(tài)。分布式數(shù)據(jù)庫(kù)代理的內(nèi)部模型如圖3所示。

分布式數(shù)據(jù)庫(kù)代理主要分并發(fā)訪問(wèn)控制、數(shù)據(jù)分片和路由等3個(gè)模塊,當(dāng)應(yīng)用程序向存儲(chǔ)集群發(fā)送請(qǐng)求,并發(fā)訪問(wèn)控制模塊接收請(qǐng)求,并對(duì)請(qǐng)求排序,按照時(shí)間點(diǎn)的順序處理請(qǐng)求,并向其它模塊發(fā)送處理命令。數(shù)據(jù)分片模塊,在對(duì)存儲(chǔ)的數(shù)據(jù)分片后,并在索引系統(tǒng)中記錄。路由模塊接到數(shù)據(jù)查詢或者更新命令時(shí),查詢索引系統(tǒng),查找到要查詢和更新的節(jié)點(diǎn)編號(hào),進(jìn)而查詢和更新數(shù)據(jù)。

圖3 分布式數(shù)據(jù)庫(kù)代理模型

3 單點(diǎn)故障恢復(fù)

內(nèi)存數(shù)據(jù)庫(kù)雖然在訪問(wèn)性能上相比磁盤數(shù)據(jù)庫(kù)有很大提升,但由于主存中信息的易失性, 在系統(tǒng)出現(xiàn)故障時(shí), 內(nèi)存數(shù)據(jù)庫(kù)中的數(shù)據(jù)將丟失, 為此, 內(nèi)存數(shù)據(jù)庫(kù)必須提供高效、可靠的恢復(fù)機(jī)制以使在發(fā)生系統(tǒng)故障的時(shí)候能將數(shù)據(jù)庫(kù)恢復(fù), 通常內(nèi)存數(shù)據(jù)庫(kù)采用檢查點(diǎn)和日志的方法來(lái)實(shí)現(xiàn)系統(tǒng)恢復(fù)。檢查點(diǎn)和日志的方法一般都是內(nèi)存數(shù)據(jù)庫(kù)自帶的,內(nèi)存數(shù)據(jù)庫(kù)的持久化的數(shù)據(jù)文件和日志文件與內(nèi)存數(shù)據(jù)庫(kù)服務(wù)處在同一臺(tái)服務(wù)器上,因此,在發(fā)生較大的毀滅性故障時(shí),數(shù)據(jù)是無(wú)法恢復(fù)的。因此本文在原有的基礎(chǔ)上,添加磁盤數(shù)據(jù)庫(kù)層,用于內(nèi)存數(shù)據(jù)庫(kù)的另一個(gè)拷貝,并與內(nèi)存數(shù)據(jù)庫(kù)服務(wù)節(jié)點(diǎn)分離,處于單獨(dú)的節(jié)點(diǎn)。同時(shí),考慮單點(diǎn)故障時(shí),數(shù)據(jù)訪問(wèn)服務(wù)會(huì)中斷,因此對(duì)內(nèi)存數(shù)據(jù)庫(kù)采用主從機(jī)制,在主節(jié)點(diǎn)出現(xiàn)故障時(shí),能切換到從節(jié)點(diǎn)上,使數(shù)據(jù)訪問(wèn)得以繼續(xù)。添加從節(jié)點(diǎn)和磁盤數(shù)據(jù)庫(kù)層的設(shè)計(jì)框架如圖4所示。

MP是內(nèi)存數(shù)據(jù)庫(kù)的主節(jié)點(diǎn),MS是從節(jié)點(diǎn),H是磁盤數(shù)據(jù)庫(kù)節(jié)點(diǎn)。當(dāng)數(shù)據(jù)庫(kù)代理發(fā)送數(shù)據(jù)更新和插入操作時(shí),由主節(jié)點(diǎn)負(fù)責(zé),而數(shù)據(jù)的查詢由從節(jié)點(diǎn)執(zhí)行,這樣讀寫分離可以提高訪問(wèn)性能。同時(shí),在MP節(jié)點(diǎn)出現(xiàn)故障,數(shù)據(jù)庫(kù)代理可以把對(duì)主節(jié)點(diǎn)的操作平滑轉(zhuǎn)移到從節(jié)點(diǎn)。另外主從節(jié)點(diǎn)上都會(huì)有數(shù)據(jù)的全持久化和日志增量備份,當(dāng)節(jié)點(diǎn)上內(nèi)存數(shù)據(jù)庫(kù)服務(wù)出現(xiàn)故障,可以從節(jié)點(diǎn)的數(shù)據(jù)文件或者日志中恢復(fù)。但如果是整個(gè)節(jié)點(diǎn)被破壞,那么就需要從磁盤數(shù)據(jù)庫(kù)節(jié)點(diǎn)上來(lái)恢復(fù)數(shù)據(jù)。

圖4 單點(diǎn)故障恢復(fù)功能模型

此方法確保了在發(fā)生單點(diǎn)故障時(shí),數(shù)據(jù)能夠快速的恢復(fù),并且服務(wù)不被中斷。

4 結(jié)束語(yǔ)

本文主要研究了基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群的分布式數(shù)據(jù)庫(kù)代理和單點(diǎn)故障恢復(fù)等關(guān)鍵技術(shù)的實(shí)現(xiàn)原理,從而說(shuō)明了基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群架構(gòu)在技術(shù)上的可行性,闡明了基于內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)集群能夠解決海量高并發(fā)系統(tǒng)的高性能數(shù)據(jù)存儲(chǔ)和訪問(wèn)問(wèn)題,其核心優(yōu)勢(shì)在于:

(1)高性能:是通過(guò)內(nèi)存數(shù)據(jù)庫(kù)提供高性能關(guān)系數(shù)據(jù)庫(kù)存取服務(wù);

(2)持久化:通過(guò)兩級(jí)數(shù)據(jù)庫(kù)及異步寫日志或者磁盤文件完成持久化;

(3) 高可用性:通過(guò)主備節(jié)點(diǎn)實(shí)現(xiàn)MDB的高可用性;二級(jí)磁盤數(shù)據(jù)庫(kù)以及持久化日志文件和磁盤文件可以實(shí)現(xiàn)數(shù)據(jù)的快速恢復(fù)。

[1] 周游弋,董道國(guó),金城. 高并發(fā)集群監(jiān)控系統(tǒng)中內(nèi)存數(shù)據(jù)庫(kù)的設(shè)計(jì)與應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用與軟件,2011,28(6):128-130.

[2] 肖迎元,劉云生,鄧華鋒,劉小峰. 適合分布式實(shí)時(shí)內(nèi)存數(shù)據(jù)庫(kù)的全局一致性模糊備份策略[J]. 計(jì)算機(jī)科學(xué),2006,33(8):151-154.

[3] 章宏?duì)N,薛巍,舒繼武. 一種可擴(kuò)展分布式RAID存儲(chǔ)集群系統(tǒng)[J]. 計(jì)算機(jī)研究與發(fā)展,2008,45(4):741-746.

[4] 林春. 分布式內(nèi)存數(shù)據(jù)庫(kù)的恢復(fù)[J]. 航空計(jì)算技術(shù), 2003,33(2):90-92.

[5] 王文林,廖建新,朱曉民. 基于VoiceXML的語(yǔ)音平臺(tái)緩存一致性控制算法[J] .電子學(xué)報(bào),2007,4(4):1-3.

[6] 許貴平,蔡博克. 支持實(shí)時(shí)內(nèi)存數(shù)據(jù)庫(kù)不間斷服務(wù)的恢復(fù)技術(shù)[J]. 計(jì)算機(jī)工程,2008.3,34(6):70-71.

[7] 姚恒,薛質(zhì). 基于增量日志的數(shù)據(jù)復(fù)制[J]. 信息安全與通信保密,2007.6.

Key technology research of storage cluster based on memory database

ZHANG Liang1,2, WANG Chun1,2, LI Wei1,2
(1 State Key Laboratory of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing 100876, China; 2 EBUPT Information Technology Co., Ltd., Beijing 100191, China)

Storage cluster which based on disk resident database are unable to store and process data in real time due to considerable overheads caused by I/O swapping operations. Therefore storage cluster which based on memory database are a better design proposal. This paper mainly studies the key technologies of the storage cluster which based on memory database including database proxy, the single node recovery.

memory database; storage cluster; database proxy; single node recovery

TN915

A

1008-5599(2012)10-0081-04

2012-09-16

國(guó)家自然科學(xué)基金(No. 61072057,61101119,61121001,60902051);長(zhǎng)江學(xué)者和創(chuàng)新團(tuán)隊(duì)發(fā)展計(jì)劃資助(No. IRT1049);國(guó)家科技重大專項(xiàng)(No. 2011ZX03002-001-01,移動(dòng)互聯(lián)網(wǎng)總體架構(gòu)研究)。

猜你喜歡
分片磁盤內(nèi)存
上下分片與詞的時(shí)空佈局
詞學(xué)(2022年1期)2022-10-27 08:06:12
分片光滑邊值問(wèn)題的再生核方法
CDN存量MP4視頻播放優(yōu)化方法
解決Windows磁盤簽名沖突
“春夏秋冬”的內(nèi)存
基于模糊二分查找的幀分片算法設(shè)計(jì)與實(shí)現(xiàn)
修改磁盤屬性
磁盤組群組及iSCSI Target設(shè)置
創(chuàng)建VSAN群集
基于內(nèi)存的地理信息訪問(wèn)技術(shù)
吉首市| 濮阳县| 项城市| 弋阳县| 东丽区| 南昌市| 浙江省| 陆良县| 新邵县| 横峰县| 屏山县| 桃园市| 浙江省| 宣威市| 黔南| 桐庐县| 通州市| 凤台县| 浙江省| 肇源县| 遂昌县| 唐山市| 碌曲县| 新化县| 扎兰屯市| 甘肃省| 剑川县| 龙岩市| 晋城| 仁化县| 高邑县| 会理县| 霍林郭勒市| 文安县| 调兵山市| 永新县| 兴国县| 平舆县| 郴州市| 苍南县| 马边|