MPP數據庫CirroData以計算存儲分離架構實現高擴展性與靈活調度

MPP數據庫CirroData以計算存儲分離架構實現高擴展性與靈活調度

計算存儲分離是“雲”存在的模式和形態之一,也是最有成本優勢的方式之一。通過將存儲層與計算層做到極致,實現規模經濟與共享經濟,以更少的財務成本滿足業務需求。

分析型數據庫 (Analytic Database),也稱為數據倉庫 (Data Warehouse),支持分析型處理,也叫聯機分析處理OLAP (On-Line Analytical Processing),一般針對某些主題歷史數據進行分析,支持管理決策。這類處理的特點是數據量大、數據密集、計算密集、算法複雜。

在上世紀九十年代,出現了一類幫助企業做分析報告,進行決策支持的軟件,也就是我們說的商業智能(Business Intelligence,BI)。伴隨著這類業務出現了“數據倉庫”的概念。早期的數據倉庫支撐的數據量和業務能力都十分有限,但隨著數據量的增大以及企業業務複雜性的增加,出現了MPP技術,也就是我們所說的大規模並行處理系統,這種分佈式系統的特點是存儲容量大,計算速度快。GreenPlum和TeraData是其中的典型代表。

隨著大數據時代的到來,一方面數據量呈爆炸式的增長,另一方面,企業的經營決策下沉,更多的中、基層管理者通過大數據技術,參與到企業的經營管理中來,使得傳統的MPP數據庫難以支撐。為了更好滿足市場的迫切需求,新一代基於計算存儲分離架構的數據庫管理技術應運而生,而CirroData數據庫正是在這樣技術換代的背景下出現的。

1分析型數據庫的架構演進分為三個階段

MPP數據庫CirroData以計算存儲分離架構實現高擴展性與靈活調度

圖1 分析型數據庫架構演進

第一階段:基於SMP的小型機 + 單機版傳統關係型數據庫,典型代表是Oracle數據庫。SMP (Symmetrical Multi-Processing),對稱多處理技術,是指在一個計算機上彙集了一組處理器(多CPU),各CPU之間共享內存子系統、總線結構、以及磁盤陣列存儲,也就是所謂的shared-everything架構。這種技術採用scale-up的方式擴展計算性能,CPU最大能力存在上限,可擴展性差,常見幾個到十幾個CPU,高端產品可以擴展到幾十,很難做到上百個CPU。並且IO瓶頸明顯,性能以及並行處理能力低下。此外由於多個處理器共享一個操作系統和一個磁盤陣列存儲,一旦操作系統出現問題,整個機器就會完全癱瘓。但這類機型技術比較成熟,相應的軟件也比較多。

第二階段:基於X86服務器 + MPP分佈式數據庫,GreenPlum等是這一階段的代表。MPP (Massively Parallel Processing),大規模並行處理系統,是由許多松耦合的處理單元組成,每個單元內的CPU都有自己私有的資源,如總線、內存、硬盤等,在每個單元內都有操作系統和管理數據庫的實例副本,被稱作shared-nothing架構。其最大的特點是不共享資源。MPP技術採用scale-out的方式橫向擴展,投資成本相對降低,集群的計算能力和存儲能力遠遠超過第一階段。集群的規模在幾十臺服務器,側重於海量數據的處理和查詢。由於MPP集群擴展性能差,架構不易調整,因此併發量不能太高,尤其不擅長高併發小數據量查詢。

第三階段:基於X86服務器 + 新一代MPP分佈式數據庫,CirroData數據庫就屬於這一階段的產品,我們也可以稱其為基於分佈式存儲系統的新一代MPP。在繼承了傳統MPP高性能並行計算優勢的同時,新一代MPP數據庫引入了成熟的分佈式存儲技術,採用了存儲和計算分離的架構,使得集群的擴展性與靈活性獲得了巨大提升,集群規模能夠輕鬆擴充到上千節點。此外,由於存儲與計算分離,使得存儲資源和計算資源可以根據需求,進行更靈活的劃配,充分提高資源利用率。在相同集群規模下,其併發能力、任務吞吐量也有更大的提升。而多租戶的靈活劃分是另一大優勢。

2

傳統MPP數據庫計算存儲綁定與CirroData數據庫計算存儲分離的架構對比

2.1 定義

傳統MPP數據庫:採用shared-nothing架構,每一個節點擁有獨立的計算和存儲資源,每一個節點都有各自的計算引擎和存儲引擎,每個節點就是個數據庫,它是計算存儲綁定的。

CirroData數據庫:基於分佈式存儲系統的新一代MPP,底層是分佈式存儲系統,所有節點共享存儲,每個節點又擁有自己獨立的計算資源,整個集群的計算資源與存儲資源是單獨調配的,實現了計算存儲分離。

2.2 數據庫集群的擴展性

2.2.1 傳統MPP數據庫的擴展性

傳統MPP數據庫是計算存儲綁定的架構,每個節點的CPU只能訪問本地存儲,不能跨節點訪問。因此它要求數據在所有節點上均勻分佈,同時SQL執行策略是統一調度,所有節點步調一致。由於存儲是分佈式的,並行I/O吞吐率很高,而多節點並行的本地化計算又提供了很高的計算性能,這都是傳統MPP數據庫的優勢。但這種計算存儲綁定的架構與調度機制卻導致了很差的集群擴展性:

a) 傳統MPP數據庫採用master-slave架構,master節點成為瓶頸。由於集群中所有的數據和執行任務都要通過master節點進行派發和調度,所有slave節點都要由master節點進行管理。在集群規模是十幾,或者幾十個節點的時候,master節點都還可以正常工作。但當集群規模進一步擴大,所有數據和任務都要在數百甚至上千的節點上進行分配和調度,master的管理成本極高,性能達到上限,無法支撐,成為瓶頸,因此限制了集群的擴容。

b) 傳統MPP數據庫採用數據均勻分佈、統一調度的策略。當集群擴容,有新的節點加入時,所有數據要在現有集群的所有服務器節點上進行重新分配 (redistribute),而這種數據遷移的操作粒度是記錄級的,需要耗費大量的計算資源,直接導致集群的運行性能下降。

c) 此外,傳統MPP數據庫由於採用SQL執行在集群所有節點統一調度的策略。因此集群併發度存在上限,即 併發度 = 單機CPU的核數 × 2 。也就是說不能通過增加節點擴展集群規模的方式,來提高併發數。這也就造成了傳統MPP數據庫不敢開放給更多的應用,不敢承擔to C的業務。然而隨著企業的數據資產越來越多,業務量和業務種類的增加,對併發數的要求也會越來越高。傳統MPP數據庫解決這種問題的辦法只能是建立多個數據庫,但這也就形成了數據孤島,集群間獨立,無法跨庫計算,需要在數據倉庫內部多個集群之間二次搬動數據。

2.2.2 CirroData數據庫的擴展性

CirroData數據庫是採用計算存儲分離的架構,計算引擎無狀態,所有數據都是存儲在存儲引擎上的。CirroData集群中的所有節點共享底層的分佈式存儲系統進行數據的分佈式存儲。而這種計算存儲分離的架構在繼承了傳統MPP數據庫高性能優勢的同時,也保證了集群非常好的擴展性。對於CirroData數據庫來說,擴展到上千,甚至數千節點都非常輕鬆。

a)CirroData數據庫並沒有採用傳統的master-slave架構,整個集群不存在單一的master節點。對於數據的派發、執行任務的調度、以及集群中各個節點的管理,都是通過動態分配的master節點來完成的。集群中的每一個節點都有可能成為某一時刻的master節點,這就避免了傳統MPP數據庫系統中單一master節點架構帶來的致命問題。在CirroData數據庫集群中,master節點不會成為瓶頸。

此外,由於CirroData的數據分佈,與任務調度策略不同於傳統MPP的在所有節點上平均哈希分配方式,而是動態靈活的進行調配。並且由於計算存儲分離,計算資源與存儲資源能夠分開獨立的進行分佈和調度,因此這也保證了在集群規模非常大的情況下,master節點不需要管理整個集群的所有服務器節點,而只需要動態的去管理某個子集群即可。Master節點不再成為限制集群擴展性的制約因素,確保了CirroData數據庫的高可擴展性。

b)CirroData數據庫引入底層分佈式存儲系統。在集群擴展過程中,由於加入新的節點,分佈式存儲引擎也需要對數據做rebalance,即數據的重新分佈。但不同於傳統MPP數據庫對數據進行“記錄”級的重分發,分佈式存儲系統對數據進行“塊”級的重新分佈。這就意味著它的計算量會非常少,只需要做些簡單的文件塊拷貝,不消耗計算資源。換句話說,CirroData數據庫可以在系統閒暇、網絡閒暇時,在後臺無感知的對數據進行基於“數據塊”的重分發,從而不影響整個集群的計算性能,為集群的高可擴展性提供了可能。

c)此外,由於CirroData數據庫在SQL調度執行上,並沒有採取傳統MPP在集群所有節點統一調度的策略,而是可以對計算資源進行靈活調配,因此它的併發度與集群規模呈線性增長。整個集群的併發數完全可以通過數據庫擴容,增加節點,得到提升。這也就保證了CirroData數據庫集群通過規模上的擴展,實現對業務更好的支撐,為平臺接入更多應用提供了可能性和保障。

2.3 計算與存儲資源的規劃

傳統MPP數據庫:採用計算存儲綁定的架構,數據在整個集群所有節點平均分佈,執行任務在所有節點統一調度,這就導致對於系統資源劃分的僵化和不靈活。在實際應用中,經常會遇到突發和快速增長的工作負載,需要擴容,傳統MPP無法靈活的應對這種情況,要麼造成系統資源的浪費,要麼使得系統難以支撐高負載,直接影響對用戶的服務質量 (QOS: Quality of Service)。

CirroData數據庫:計算存儲分離的架構和靈活的調度方式,使得我們可以對計算與存儲資源單獨規劃。根據系統實際的負載情況,對計算資源靈活調度,按需分配,彈性擴容和縮容,既能夠很好的應對突發的系統高峰值情況,又能不造成系統資源的浪費,最大化實現客戶價值。

2.4 多租戶的劃分

MPP數據庫CirroData以計算存儲分離架構實現高擴展性與靈活調度

圖2 CirroData多租戶資源劃分

正是由於CirroData數據庫具備了上面所說的高可擴展性和對系統資源的靈活調度,使得CirroData一方面可以對集群的擴容,支撐大量的多租戶訪問,提供高性能的服務;另一方面,CirroData可以根據租戶的實際需求,對計算資源進行的靈活劃分,在既保證各租戶數據和資源隔離的情況下又能做到多租戶共享數據,充分滿足用戶的使用需求。

傳統MPP數據庫的可擴展性差,調度策略僵化,整個集群可支撐的租戶數量存在上限,並且各個租戶之間也難以做到很好的資源隔離與共享。

2.5 系統開銷

傳統MPP數據庫由於採用計算存儲綁定的架構,使得計算能夠在本地進行,保證了集群的高計算性能。

CirroData數據庫由於採用分佈式存儲系統,不能保證所有計算都是本地化,會出現遠端讀數據,進行計算的情況。這就不可避免的會有網絡開銷,造成一定的網絡延遲。

但由於傳統MPP的擴展性差,當處理的事務達到一定規模時,集群性能就會下降。而CirroData數據庫的效率就會更好。

此外,早期千兆網絡時,網絡延遲大,一旦出現遠端讀,對系統整體性能影響顯著。而現在已經是萬兆網絡,網絡延遲大幅降低,系統整體性能受到的影響也就十分有限了 。

CirroData是東方國信自主研發的新一代雲化數據庫,至今已擁有數百名企業級客戶,部署超過數千節點。CirroData採用了先進的計算存儲分離架構,融合了分佈式存儲和MPP並行計算的各自優勢,輕鬆實現雲平臺上的即時彈性伸縮和擴展。

目前,CirroData已經成功申請國家發明專利二十餘項,獲得國家發改委定向數據庫資金支持,併入選工信部頒發的百家大數據優秀案例。


分享到:


相關文章: