1 背景
近年來,企業(yè)的各項業(yè)務發(fā)展迅猛,客戶數(shù)目不斷增加,后臺服務系統(tǒng)壓力也越來越大,系統(tǒng)的各項硬件資源也變得非常緊張。因此,在技術風險可控的基礎上,希望引入大數(shù)據(jù)技術,利用大數(shù)據(jù)技術優(yōu)化現(xiàn)有IT系統(tǒng)實現(xiàn)升級改造,搭建一個統(tǒng)一存儲和管理歷史、近線數(shù)據(jù)的服務平臺,同時能夠對外支持高并發(fā)、低延時的數(shù)據(jù)查詢服務,以提高IT系統(tǒng)的計算能力,降低IT系統(tǒng)的建設成本,優(yōu)化IT系統(tǒng)的服務體系,為各個業(yè)務部門提供更加優(yōu)質的IT服務。
這類服務平臺在整個IT系統(tǒng)架構中實質上是一個為核心業(yè)務系統(tǒng)減負的系統(tǒng)。SequoiaDB 巨杉數(shù)據(jù)庫支持海量分布式數(shù)據(jù)存儲,并且支持垂直分區(qū)和水平分區(qū),利用這些特性可以將歷史、近線數(shù)據(jù)存儲到 SequoiaDB 中,并能夠對外支持高并發(fā)、低延時的數(shù)據(jù)查詢服務。本文主要講解如何利用巨杉數(shù)據(jù)庫域的特性在歷史、近線數(shù)據(jù)應用場景下進行存儲規(guī)劃已滿足業(yè)務系統(tǒng)對性能、存儲、維護等方便的要求。
2 相關概念
多維度數(shù)據(jù)分區(qū)
SequoiaDB 支持水平和垂直方式分區(qū)。采用散列(hash)或范圍(range)水平分區(qū)是將數(shù)據(jù)分布至多個節(jié)點,加大數(shù)據(jù)吞吐量, 加速數(shù)據(jù)查詢和寫入;采用范圍(range)垂直分區(qū)是在一個節(jié)點內將數(shù)據(jù)邏輯劃分為多個區(qū)間,每個區(qū)間作為獨立的存儲單元,減少查詢時網(wǎng)絡I/O, 進一步加速查詢。
水平分區(qū)
散列水平分區(qū),原理是將選擇的分區(qū)鍵進行 hash 運算,根據(jù) hash 值將數(shù)據(jù)分發(fā)至相應分區(qū)。范圍水平分區(qū)則是直接匹配分區(qū)鍵和所對應的范圍,存放到相應的分區(qū)。兩種分區(qū)方式各有適用的場景,和運行的業(yè)務息息相關。一般不建議采用范圍水平分區(qū),除范圍分區(qū)鍵(如月)能保證數(shù)據(jù)均衡(如每月的數(shù)據(jù)量級一致)。如圖2-1所示。
圖2-1. SequoiaDB 水平分區(qū)
垂直分區(qū)
垂直分區(qū)是指在一個節(jié)點內集合數(shù)據(jù)按某字段,分成成多個數(shù)據(jù)段。每個范圍代表一個垂直分區(qū)。數(shù)據(jù)查詢、寫入時自動分發(fā)至相應分區(qū)中。垂直分區(qū)極大減少硬盤數(shù)據(jù)訪問,降低網(wǎng)絡I/O,加速查詢。垂直分區(qū)共享資源(同一臺物理機),出發(fā)點在于將冷熱數(shù)據(jù)隔離,如圖2-2所示。
圖2-2. SequoiaDB 垂直分區(qū)
復制組和域
分區(qū)組又被稱為復制組,一個復制組內可以包含一個或多個數(shù)據(jù)節(jié)點(或編目節(jié)點),節(jié)點之間的數(shù)據(jù)使用異步日志復制機制,保持最終一致。
域(Domain)是由若干個復制組(ReplicaGroup)組成的邏輯單元。每個域都可以根據(jù)定義好的策略自動管理所屬數(shù)據(jù),如數(shù)據(jù)切片和數(shù)據(jù)隔離等。
以3臺服務器為例,每臺服務器9塊磁盤。復制組的物理部署和域的邏輯組成如圖2-3所示:
采用3副本,按磁盤部署數(shù)據(jù)節(jié)點,每臺機器部署9個數(shù)據(jù)節(jié)點,3臺機器橫向組成數(shù)據(jù)組,共9個數(shù)據(jù)組。如圖域1包括數(shù)據(jù)組1-3,域2包括數(shù)據(jù)組5-9,域3包括數(shù)據(jù)組1-6,因此域在邏輯上由數(shù)據(jù)組組成,并且組成的數(shù)據(jù)組可以重疊。
3 業(yè)務場景
隨著用戶的增加、業(yè)務的發(fā)展,大型企業(yè)用戶的業(yè)務系統(tǒng)的數(shù)據(jù)量越來越大,而且原有系統(tǒng)絕大部分基于關系型數(shù)據(jù)構建,表結構復雜,每個查詢都需要關聯(lián)若干張大數(shù)據(jù)表,導致關聯(lián)查詢的性能非常低。
因此可以利用 SequoiaDB 存儲海量歷史、近線數(shù)據(jù)并開發(fā)數(shù)據(jù)查詢統(tǒng)一入口,按照數(shù)據(jù)生命周期管理的規(guī)則對歷史、近線數(shù)據(jù)進行統(tǒng)一在線存儲。另外平臺提供高并發(fā)、實時查詢服務,解決了關系型數(shù)據(jù)庫海量數(shù)據(jù)關聯(lián)查詢性能慢的問題。
根據(jù)業(yè)務系統(tǒng)歷史、近線數(shù)據(jù)的需求,建立歷史、近線數(shù)據(jù)存儲區(qū)用于存儲從源系統(tǒng)直接導入的原始數(shù)據(jù),包括超出生產(chǎn)系統(tǒng)保存期限的數(shù)據(jù)以及需要按時點備份的數(shù)據(jù)。同時為提供在線、中高并發(fā),小結果集的數(shù)據(jù)處理能力,可根據(jù)源系統(tǒng)不同劃分多個存儲區(qū)域,集群內部使用劃分數(shù)據(jù)域的方式進行分類管理。
4 數(shù)據(jù)域劃分方式
在業(yè)務系統(tǒng)通過接入平臺將結構化數(shù)據(jù)接入到巨杉數(shù)據(jù)庫時,需根據(jù)數(shù)據(jù)調研信息對業(yè)務系統(tǒng)進行分類,以確定業(yè)務系統(tǒng)的存儲量、并發(fā)大小、數(shù)據(jù)生命周期等,為結構化數(shù)據(jù)在巨杉數(shù)據(jù)庫中的存儲規(guī)劃提供信息支撐。業(yè)務系統(tǒng)結構化數(shù)據(jù)存儲到巨杉數(shù)據(jù)庫可利用數(shù)據(jù)域技術對業(yè)務系統(tǒng)的數(shù)據(jù)區(qū)域進行功能劃分,具體劃分方式如下:
海量數(shù)據(jù)或者高并發(fā)查詢業(yè)務系統(tǒng)
這類業(yè)務系統(tǒng)的特點是業(yè)務查詢并發(fā)較大,數(shù)據(jù)所占存儲空間較大,對cpu、內存、網(wǎng)絡要求較高,利用域對這類系統(tǒng)進行隔離,可以使數(shù)據(jù)在寫入、讀取時充分利用集群中域所在機器的物理資源以提升性能。
數(shù)據(jù)量較小或者查詢并發(fā)數(shù)較小的業(yè)務系統(tǒng)
這類業(yè)務系統(tǒng)一般對cpu、內存、網(wǎng)絡要求較低,所占存儲空間較小。因此這類系統(tǒng)可以和其他并發(fā)、所占存儲較小的業(yè)務系統(tǒng)的數(shù)據(jù)域共享數(shù)據(jù)組以節(jié)省機器資源。
5 利用數(shù)據(jù)域水平擴展集群
目前,企業(yè)的部分業(yè)務系統(tǒng)結構化數(shù)據(jù)年增長量較大并且數(shù)據(jù)越來越多。在業(yè)務系統(tǒng)投產(chǎn)后,隨著業(yè)務量的增加集群可使用容量逐漸變小,因此在業(yè)務系統(tǒng)接入集群前需考慮存儲容量耗盡后整個集群的水平擴展。SequoiaDB 是分布式數(shù)據(jù)庫,因此可以通過集群的擴容實現(xiàn)集群性能的近線性增長。而通過擴容后主要解決兩個問題是數(shù)據(jù)存儲的容量問題和整個集群的性能問題。因為數(shù)據(jù)量的不斷增長及上線后的推廣使用,所以需要進行擴容來提升集群性能及增加數(shù)據(jù)存儲空間。
SequoiaDB 在集群的管理上定義了數(shù)據(jù)域概念,一個數(shù)據(jù)域可以將多個數(shù)據(jù)組包含進來。一個集群可以根據(jù)不同的業(yè)務系統(tǒng)來劃分不同的數(shù)據(jù)域,不僅實現(xiàn)將不同業(yè)務系統(tǒng)數(shù)據(jù)在物理層面的隔離存儲,同時也實現(xiàn)了不同業(yè)務系統(tǒng)數(shù)據(jù)的統(tǒng)一調度管理,而且以后的集群擴容也可以根據(jù)域的使用需求而只針對此域進行集群擴容。
所以在進行擴容時,我們需要結合 SequoiaDB 數(shù)據(jù)域和業(yè)務系統(tǒng)需求進行擴容規(guī)劃及實施。結構化數(shù)據(jù)在擴容時,可針對結構化數(shù)據(jù)所在數(shù)據(jù)域增加數(shù)據(jù)組再進行數(shù)據(jù)均衡切分到新擴容的機器上;或者使子表分散在單獨的集合空間中,并使子表對應的集合空間所屬數(shù)據(jù)組在新擴容機器的數(shù)據(jù)組上。
6 具體案例
某大型金融用戶的某系統(tǒng)歷史數(shù)據(jù)量60T,每天有80G左右的增量數(shù)據(jù)。假設按照3年數(shù)據(jù)總量做存儲規(guī)劃,則三年數(shù)據(jù)占總存儲約為(60+80G365/1024)3=266T。
假設現(xiàn)在客戶提供的硬件配置信息如下:
具體安裝部署如圖6-1所示:
圖6-1
存儲規(guī)則
根據(jù)上述業(yè)務系統(tǒng)的信息,可將這類系統(tǒng)劃分為高并發(fā)海量存儲業(yè)務場景。結合數(shù)據(jù)域劃分方式以及未來擴容需求,該業(yè)務系統(tǒng)的結構化數(shù)據(jù)存儲在接入時數(shù)據(jù)域劃分規(guī)則如下:
1、 海量數(shù)據(jù)高并發(fā)查詢業(yè)務系統(tǒng)使用獨立的域進行存儲;
2、 使用主子表按照時間切分,每個子表按照ID散列分布到域所對應的所有機器上;
3、 海量數(shù)據(jù)高并發(fā)查詢業(yè)務系統(tǒng)子表單獨使用集合空間;
4、 數(shù)據(jù)量較小或者并發(fā)查詢較小的業(yè)務系統(tǒng)可以共用域;
5、 結構化域擴容可使用增加數(shù)據(jù)組再進行數(shù)據(jù)均衡切分到新擴容的機器上,或者使子表分散在單獨的集合空間中,并使子表對應的集合空間所屬數(shù)據(jù)組在新擴容機器的數(shù)據(jù)組上。
集合空間和集合設計
根據(jù)上述存儲規(guī)則,該業(yè)務場景下的結構化數(shù)據(jù)和非結構化數(shù)據(jù)存儲方式如下:
使用主子表按照時間切分,每個子表按照ID或者業(yè)務字段散列分布,子表跨度按月進行切分,并且子表分散在單獨的集合空間中。
7 總結
數(shù)據(jù)域在邏輯上由一個或多個數(shù)據(jù)組組成,在物理上對應具體的數(shù)據(jù)節(jié)點,并且不同的域之間可以重疊數(shù)據(jù)組。因此,業(yè)務系統(tǒng)可以根據(jù)主子表特性以及域包含數(shù)據(jù)組的靈活性將集群劃分為不同的區(qū)域存儲結構化數(shù)據(jù),充分利用集群的計算、存儲資源。巨杉數(shù)據(jù)庫,支持海量數(shù)據(jù)存儲,SequoiaDB 支持垂直分區(qū)和水平分區(qū),提供高并發(fā)、低延時數(shù)據(jù)查詢服務。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。