分布式數(shù)據(jù)庫(kù)中間件DDM的實(shí)現(xiàn)原理

隨著數(shù)據(jù)量不斷增大考榨,傳統(tǒng)的架構(gòu)模式難以解決業(yè)務(wù)量不斷增長(zhǎng)所帶來的問題号显,特別是在業(yè)務(wù)成線性臭猜、甚至指數(shù)級(jí)上升的情況。此時(shí)我們不得不通過水平擴(kuò)展押蚤,把數(shù)據(jù)庫(kù)放到不同服務(wù)器上來解決問題蔑歌,也就是我們說的數(shù)據(jù)庫(kù)中間件。


作為數(shù)據(jù)庫(kù)中間件揽碘,分布式數(shù)據(jù)庫(kù)中間件DDM將底層數(shù)據(jù)庫(kù)存儲(chǔ)引擎以集群方式管理起來次屠,用戶使用非常方便。應(yīng)用程序不需要關(guān)心具體有多少分片雳刺。類似操作單機(jī)數(shù)據(jù)庫(kù)劫灶,用戶通過DDM管理控制臺(tái)進(jìn)行數(shù)據(jù)庫(kù)運(yùn)維,使用JDBC等驅(qū)動(dòng)服務(wù)或SQL客戶端連接數(shù)據(jù)庫(kù)掖桦,進(jìn)行數(shù)據(jù)讀寫本昏。

DDM服務(wù)的業(yè)務(wù)架構(gòu)圖示


分片是解決數(shù)據(jù)庫(kù)存儲(chǔ)容量限制的直接途徑。分片包括垂直分片與水平分片兩種方式枪汪。

垂直分片

垂直分片又叫縱向分割涌穆,即以邏輯表為單位,把原有數(shù)據(jù)庫(kù)切分成多個(gè)數(shù)據(jù)庫(kù)雀久。切分后不同的表存儲(chǔ)在不同的數(shù)據(jù)庫(kù)上宿稀。

垂直分片與業(yè)務(wù)架構(gòu)設(shè)計(jì)有密切的聯(lián)系。比如從業(yè)務(wù)領(lǐng)域?qū)ο到y(tǒng)進(jìn)行架構(gòu)優(yōu)化赖捌,分成多個(gè)子業(yè)務(wù)系統(tǒng)祝沸,各個(gè)子業(yè)務(wù)系統(tǒng)耦合度較低。子業(yè)務(wù)系統(tǒng)間以接口方式進(jìn)行數(shù)據(jù)通信和數(shù)據(jù)交換。垂直拆分后業(yè)務(wù)清晰罩锐,拆分規(guī)則明確奉狈,系統(tǒng)之間容易整合與擴(kuò)展。一般用于數(shù)據(jù)庫(kù)上層架構(gòu)設(shè)計(jì)唯欣。

垂直分片示意圖

水平分片

水平分片又叫橫向分割嘹吨,即以邏輯表中的數(shù)據(jù)行記錄為單位,把原有邏輯數(shù)據(jù)庫(kù)切分成多個(gè)物理數(shù)據(jù)庫(kù)分片境氢,表數(shù)據(jù)記錄分布存儲(chǔ)在各個(gè)分片上蟀拷。

水平分片主要用業(yè)務(wù)架構(gòu)無法繼續(xù)細(xì)分,而數(shù)據(jù)庫(kù)中單張表數(shù)據(jù)量太大萍聊,查詢性能下降的場(chǎng)景问芬。通過水平分片,即解決單庫(kù)容量問題寿桨,同時(shí)提高并發(fā)查詢性能此衅。

水平分片示意圖


DDM實(shí)現(xiàn)了自動(dòng)水平分片,應(yīng)用無需關(guān)心某個(gè)數(shù)據(jù)該存儲(chǔ)在哪一塊分片上亭螟。對(duì)邏輯表水平分片需要依據(jù)一定的分片規(guī)則挡鞍,例如一個(gè)訂單跟蹤系統(tǒng)(見上圖),我們選取訂單號(hào)(OrderId)作為拆分鍵预烙,分別對(duì)“訂單流水表”墨微、“訂單詳情表”以及“物流跟蹤表”進(jìn)行水平拆分,拆分規(guī)則為對(duì)鍵值Hash后求模扁掸,則分片計(jì)算規(guī)則如下:

H(Key(OrderId)) = Hash(Key(OrderId))%N

其中翘县,N表示一共有N個(gè)數(shù)據(jù)分片,H(Key(OrderId))表示該訂單經(jīng)過訂單號(hào)Hash并求模后存儲(chǔ)的分片編號(hào)谴分。

分片后數(shù)據(jù)存儲(chǔ)示意圖

路由分發(fā)

路由分發(fā)與水平分片同為DDM的基礎(chǔ)功能锈麸。在分布式數(shù)據(jù)庫(kù)中,路由的作用即將SQL語句進(jìn)行解析牺蹄,并轉(zhuǎn)發(fā)到正確的分片上忘伞,保證SQL執(zhí)行后得到正確的結(jié)果,并且節(jié)約QPS資源沙兰。例如:訂單支付系統(tǒng)包含了shard0虑省、shard1、shard2三個(gè)分片僧凰,訂單號(hào)2017010112345678的訂單數(shù)據(jù)存儲(chǔ)在shard0分片上,則應(yīng)該將以下語句路由分發(fā)到shard0分片上執(zhí)行熟丸。

select Customer, OrderStatus, CreateDate from Order

where OrderId = '2017010112345678';

如果同時(shí)路由到shard0训措、shard1、shard2三個(gè)分片,會(huì)造成多余的查詢绩鸣,浪費(fèi)資源怀大;如果路由到shard1、shard2分片呀闻,則得不到正確的返回結(jié)果化借。

DDM對(duì)單張表的路由解析流程如下:

單張表的路由解析流程

讀寫分離

數(shù)據(jù)庫(kù)中對(duì)計(jì)算和緩存資源消耗較多的往往是密集或復(fù)雜的SQL查詢。當(dāng)系統(tǒng)資源被查詢語句消耗捡多,反過來會(huì)影響數(shù)據(jù)寫入操作蓖康,進(jìn)而導(dǎo)致數(shù)據(jù)庫(kù)整體性能下降,響應(yīng)緩慢垒手。因此蒜焊,當(dāng)數(shù)據(jù)庫(kù)CPU和內(nèi)存資源占用居高不下,且讀寫比例較高時(shí)科贬,可以為數(shù)據(jù)庫(kù)添加只讀實(shí)例泳梆。

添加只讀實(shí)例的作用有以下:

1、將查詢非事務(wù)性查詢SQL路由到只讀實(shí)例中執(zhí)行榜掌,主實(shí)例上執(zhí)行事務(wù)性SQL优妙,在很大程度上緩解主實(shí)例上的S鎖與X鎖的競(jìng)爭(zhēng)。

2憎账、對(duì)只讀實(shí)例上的表可配置不提供事務(wù)支持的數(shù)據(jù)庫(kù)引擎套硼,進(jìn)而提升查詢效率。

3鼠哥、增加只讀實(shí)例熟菲,也相當(dāng)于數(shù)據(jù)庫(kù)橫向擴(kuò)展,直接增加負(fù)載能力朴恳,同時(shí)增加數(shù)據(jù)冗余抄罕,確保數(shù)據(jù)庫(kù)高可用。

DDM服務(wù)實(shí)現(xiàn)了自動(dòng)讀寫分離于颖,用戶購(gòu)買了RDS只讀實(shí)例后呆贿,將只讀實(shí)例信息同步到DDM中即可,無需再做其他配置森渐。同時(shí)做入,DDM支持用戶在SQL中自定義讀寫分離策略,具體用法請(qǐng)參考如何實(shí)現(xiàn)讀寫分離同衣。

讀寫分離示意圖

平滑擴(kuò)容

隨著業(yè)務(wù)增長(zhǎng)竟块,邏輯庫(kù)存儲(chǔ)空間不足,并發(fā)壓力較大耐齐,此時(shí)可對(duì)DDM實(shí)例邏輯庫(kù)進(jìn)行平滑擴(kuò)容浪秘,通過增加RDS實(shí)例來提高數(shù)據(jù)存儲(chǔ)能力與并發(fā)支持能力蒋情。

平滑擴(kuò)容是一種水平擴(kuò)容方式,通過增加RDS實(shí)例的數(shù)量來提升總體數(shù)據(jù)存儲(chǔ)容量耸携,把分庫(kù)平滑擴(kuò)容到新增加的RDS實(shí)例上棵癣,保證所有的數(shù)據(jù)都是均衡分布在每個(gè)分庫(kù)上,降單個(gè)RDS實(shí)例的處理壓力夺衍。平滑擴(kuò)容原理如下圖所示狈谊。

平滑擴(kuò)容原理


以上就是對(duì)分布式數(shù)據(jù)庫(kù)中間件DDM實(shí)現(xiàn)原理的淺析,目前華為云DDM推出了免費(fèi)體驗(yàn)活動(dòng)沟沙,想要了解更多河劝,歡迎前往分布式數(shù)據(jù)庫(kù)中間件查看。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尝胆,一起剝皮案震驚了整個(gè)濱河市丧裁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌含衔,老刑警劉巖煎娇,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異贪染,居然都是意外死亡缓呛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門杭隙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哟绊,“玉大人,你說我怎么就攤上這事痰憎∑彼瑁” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵铣耘,是天一觀的道長(zhǎng)洽沟。 經(jīng)常有香客問我,道長(zhǎng)蜗细,這世上最難降的妖魔是什么裆操? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮炉媒,結(jié)果婚禮上踪区,老公的妹妹穿的比我還像新娘。我一直安慰自己吊骤,他們只是感情好缎岗,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著白粉,像睡著了一般密强。 火紅的嫁衣襯著肌膚如雪茅郎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天或渤,我揣著相機(jī)與錄音,去河邊找鬼奕扣。 笑死薪鹦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惯豆。 我是一名探鬼主播池磁,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼楷兽!你這毒婦竟也來了地熄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤芯杀,失蹤者是張志新(化名)和其女友劉穎端考,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揭厚,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡却特,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筛圆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裂明。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖太援,靈堂內(nèi)的尸體忽然破棺而出闽晦,到底是詐尸還是另有隱情,我是刑警寧澤提岔,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布仙蛉,位于F島的核電站,受9級(jí)特大地震影響唧垦,放射性物質(zhì)發(fā)生泄漏捅儒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一振亮、第九天 我趴在偏房一處隱蔽的房頂上張望巧还。 院中可真熱鬧,春花似錦坊秸、人聲如沸麸祷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)阶牍。三九已至喷面,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間走孽,已是汗流浹背惧辈。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留磕瓷,地道東北人盒齿。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像困食,于是被迫代替她去往敵國(guó)和親边翁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容