文/施肖肖 賴紅,武漢東湖學(xué)院
在科技快速發(fā)展的今天,數(shù)據(jù)變得越來越重要,對(duì)于數(shù)據(jù)的處理和發(fā)掘已經(jīng)到了極為重要的地位,分布式數(shù)據(jù)管理就是數(shù)據(jù)管理的核心技術(shù)之一,在分布式技術(shù)發(fā)展下,解決數(shù)據(jù)一致性的方法和技術(shù)也得到了不斷的發(fā)展,此文就以作者在研發(fā)的分布式數(shù)據(jù)庫(kù)中但實(shí)際案例來解析分布式數(shù)據(jù)庫(kù)數(shù)據(jù)原理和一致性。
首先我們要了解分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)與關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ),關(guān)系型數(shù)據(jù)存儲(chǔ)是建立在相關(guān)模型之上的數(shù)據(jù)庫(kù),借用集合線性相關(guān)性數(shù)學(xué)的概念還處理數(shù)據(jù),相當(dāng)于現(xiàn)實(shí)中的實(shí)體與實(shí)體之間的各種聯(lián)系。對(duì)于“科德十二定律”,當(dāng)前雖然有很多人持反對(duì)立場(chǎng),但是他還是數(shù)據(jù)存儲(chǔ)的傳統(tǒng)標(biāo)準(zhǔn)。關(guān)系模型的組成分為關(guān)系數(shù)據(jù),關(guān)系操作以及關(guān)系完整性的約束。簡(jiǎn)而言之,關(guān)系型數(shù)據(jù)庫(kù)就是相互鏈接可以形成二維表的數(shù)據(jù)庫(kù)。
與此不同的是,分布式數(shù)據(jù)庫(kù)是在高速網(wǎng)絡(luò)的基礎(chǔ)上使用一個(gè)邏輯方式將很多分散的數(shù)據(jù)單元連接在一起。它的基本思想改變?cè)瓉淼募写鎯?chǔ),改為分散式存儲(chǔ),從而獲得了更大的存儲(chǔ)容量,并且提高了并發(fā)性,隨著信息量的爆炸式增長(zhǎng),信息的處理變得更加重要,從而滿足需求的分布式數(shù)據(jù)庫(kù)技術(shù)也有了飛躍,相對(duì)與關(guān)系型,分布式顯得更加便捷。
在傳統(tǒng)的關(guān)系型中,對(duì)于數(shù)據(jù)安全性和一致性的保障,主要依靠硬件的提供,而且數(shù)據(jù)都是存儲(chǔ)一份的,在其中,數(shù)據(jù)庫(kù)是默認(rèn)數(shù)據(jù)一致性沒有問題的,這就存在很大的安全隱患。通過前面的原理認(rèn)知,我們就會(huì)很容易理解為什么存在數(shù)據(jù)的一致性問題,在大數(shù)據(jù)瘋狂發(fā)展的今天,他讓系統(tǒng)的性能得到了指數(shù)式增長(zhǎng),而且,大數(shù)據(jù)技術(shù)的運(yùn)行不需要很好的硬件條件,他可以通過大量的X86服務(wù)器和磁盤搭建一個(gè)集群,從而獲得更好的計(jì)算能力和更大的存儲(chǔ)空間,因?yàn)樗姆植际剑梢詫⑷蝿?wù)分解,交由多個(gè)處理機(jī)和存儲(chǔ)器共同完成,從而極大的提高了系統(tǒng)效率和能力,但是由于硬件要求低,也出現(xiàn)了數(shù)據(jù)安全的問題,其次由于多個(gè)處理機(jī)到處數(shù)據(jù)一致性也存在相關(guān)風(fēng)險(xiǎn),對(duì)于此類問題,通常通常采用數(shù)據(jù)的同步或者異步來將數(shù)據(jù)保存在多臺(tái)處理機(jī)上面來保證數(shù)據(jù)的安全和一致性。
在計(jì)算機(jī)的世界中,從硬件和軟件兩個(gè)層面來講,緩存都是廣泛被用于處理響應(yīng)慢的問題。就算在構(gòu)建服務(wù)器的時(shí)候也不例外,緩存是提升計(jì)算性能的關(guān)鍵技術(shù)之一。此外,在分布式存儲(chǔ)中,緩存的存在也是有很大的性能提升,分布式緩存能處理任務(wù)量很大的動(dòng)態(tài)數(shù)據(jù),因此在WEB2.0中應(yīng)用非常的廣泛。 在以前的本地緩存中,主要著重與CPU、內(nèi)存和緩存的數(shù)據(jù)傳輸關(guān)系。但是當(dāng)前的分布緩存中,拓展到了業(yè)務(wù)、數(shù)據(jù)庫(kù)和緩存的數(shù)據(jù)傳輸,傳輸?shù)乃俣茸兊酶友附荨?此外,在傳統(tǒng)的業(yè)務(wù)中,初期的訪問量很低,從而對(duì)響應(yīng)時(shí)間的要求比較低,只需要DB就可以很好的解決需求問題。這種架構(gòu)比較容易搭建,在初期時(shí)是個(gè)很好的解決方案,但是隨著業(yè)務(wù)的拓展,對(duì)于響應(yīng)的時(shí)間要求較高,便會(huì)出現(xiàn)很多問題,主要有一下幾點(diǎn):1、性能有限,很難滿足數(shù)十倍百倍需求的上漲,尤其在互聯(lián)網(wǎng)發(fā)展迅速的今天,這種情況很容易出現(xiàn)。2、成本較高,訪問量的提升,主要依靠提高機(jī)器數(shù)量的滿足需求,代價(jià)太高。3、難以從DS層面優(yōu)化。
其次,從處理速度來說,內(nèi)存的訪問性能明顯優(yōu)于磁盤。把數(shù)據(jù)放入內(nèi)存中,可以提供更快的讀取效率。再考慮到互聯(lián)網(wǎng)和二八原則的契合,通過引入緩存機(jī)制,將高頻數(shù)據(jù)放入緩存器,可以很好的提升系統(tǒng)性能,緩存的引入具體的優(yōu)點(diǎn)有一下幾點(diǎn):1、提升數(shù)據(jù)讀取速度。2、系統(tǒng)承載能力提升。3、硬件成本降低。4、提高了系統(tǒng)的實(shí)效性,根據(jù)需求可以更高頻次的刷新。 綜上,我們引入分布式緩存技術(shù)。
Redis是一種應(yīng)用廣泛的KV內(nèi)存數(shù)據(jù)庫(kù),和Memacached比較類似,支持?jǐn)?shù)據(jù)的持久化的日志型,并且有多種語言的API。他的出現(xiàn)很好的解決了寫的問題、可靠性需求、開發(fā)成本需求、維護(hù)性難等一系列問題。
在實(shí)際中的應(yīng)用,redis應(yīng)用與新浪微博中,其中絕大部分都是持久化的應(yīng)用,很少一部分為緩存,在持久化的應(yīng)用中,要考慮持久化和寫性能的匹配和redis使用內(nèi)存和硬盤寫的速率的比例計(jì)算。Redis的工作原理,就是寫log到一定的階段再和內(nèi)存交互,后添加,對(duì)性能的影響很小。面對(duì)在redis分布緩存中的數(shù)據(jù)一致性問題,由于長(zhǎng)期運(yùn)行后,多個(gè)結(jié)點(diǎn)可能存在不一致性,有兩個(gè)解決方案,第一、對(duì)于數(shù)據(jù)量多的數(shù)據(jù),進(jìn)行定期全不檢索。第二、對(duì)于增加的數(shù)據(jù),會(huì)抽查是否有一致性問題。由于同步問題不一致的為延時(shí)問題,對(duì)于延時(shí)問題,我們可以從應(yīng)用層增加策略以解決這些問題。
計(jì)算機(jī)界的科技迅速發(fā)展,幾年前計(jì)算機(jī)興起的時(shí)候,很多企業(yè)就在關(guān)注這個(gè)具有很高的可靠性、可用性以及高存儲(chǔ)效率的分布式存儲(chǔ),到后來的大數(shù)據(jù)時(shí)代逐步體現(xiàn)了分布式存儲(chǔ)的優(yōu)勢(shì),存儲(chǔ)的發(fā)展必然向著節(jié)能方面,然而分布式存儲(chǔ)完全符合這一概念。在未來的發(fā)展發(fā)面,由李克強(qiáng)提出的“互聯(lián)網(wǎng)+”計(jì)劃,足以體現(xiàn)計(jì)算和數(shù)據(jù)的發(fā)展前景。并且,“互聯(lián)網(wǎng)+”也對(duì)存儲(chǔ)提出了一定的要求,首先就是存儲(chǔ)要滿足無所不在的計(jì)算機(jī)的要求,其次要滿足無所不在的數(shù)據(jù),最后要對(duì)應(yīng)國(guó)產(chǎn)化的需求。在軟件上采用自助研發(fā)的存儲(chǔ)系統(tǒng),實(shí)現(xiàn)完全自主研發(fā)。
由此,分布式存儲(chǔ)技術(shù)的發(fā)展,也正好契合了中國(guó)國(guó)內(nèi)的發(fā)展需求,國(guó)產(chǎn)存儲(chǔ)必將迎來一個(gè)新的春天!
【參考文獻(xiàn)】
[1]魏青松.《大規(guī)模分布式存儲(chǔ)技術(shù)研究》[J].2013.
[2]舒敏.《分布式數(shù)據(jù)存儲(chǔ)機(jī)制與優(yōu)化方法研究》[J].2013.