讓數(shù)據(jù)庫不再成為業(yè)務(wù)發(fā)展瓶頸——分布式數(shù)據(jù)庫架構(gòu)設(shè)計

內(nèi)容來源:2017年6月4日,袋鼠云首席數(shù)據(jù)庫架構(gòu)師宏翊在“企業(yè)互聯(lián)網(wǎng)架構(gòu)優(yōu)化升級之路”進(jìn)行《讓數(shù)據(jù)庫不再成為業(yè)務(wù)發(fā)展瓶頸——分布式數(shù)據(jù)庫架構(gòu)設(shè)計》演講分享谬以。IT 大咖說(ID:itdakashuo)作為獨(dú)家視頻合作方,經(jīng)主辦方和講者審閱授權(quán)發(fā)布派桩。

閱讀字?jǐn)?shù):1705?| 3分鐘閱讀

獲取嘉賓演講視頻回放及PPT腾誉,請點(diǎn)擊:http://t.cn/RkDNJ0l

摘要

企業(yè)如何實(shí)現(xiàn)高容量大并發(fā)數(shù)據(jù)庫服務(wù)?公司業(yè)務(wù)高速發(fā)展组砚,單實(shí)例數(shù)據(jù)庫到達(dá)瓶頸的情況下吻商,如何做好分布式設(shè)計,提供高并發(fā)高性能的數(shù)據(jù)庫服務(wù)以支撐業(yè)務(wù)增長糟红?

本次分享主要內(nèi)容包括數(shù)據(jù)庫分布式架構(gòu)設(shè)計思路艾帐,拆分原理,改造難點(diǎn)盆偿,解決方案等柒爸,讓數(shù)據(jù)庫不再成為業(yè)務(wù)發(fā)展瓶頸。

為什么要做分布式事扭?

高并發(fā):分布式應(yīng)用帶來更大量的數(shù)據(jù)庫請求捎稚。

高容量:業(yè)務(wù)增長,產(chǎn)生大量在線數(shù)據(jù)求橄。

資源向上擴(kuò)展存在天花板今野。

支撐業(yè)務(wù)高速發(fā)展,平滑擴(kuò)容罐农。

拆分原則:循序漸進(jìn)

在業(yè)務(wù)初期条霜,客戶量比較少,可以把所有服務(wù)和數(shù)據(jù)都存在一個實(shí)例上涵亏,都能支持業(yè)務(wù)的發(fā)展宰睡。

發(fā)展之后的客戶量蒲凶、數(shù)據(jù)量和并發(fā)都上來了,這時數(shù)據(jù)庫很容易出現(xiàn)瓶頸夹厌。我們建議大家首先進(jìn)行服務(wù)化的改造豹爹,將不同的業(yè)務(wù)模塊做垂直梳理,把不同服務(wù)的數(shù)據(jù)庫相互隔離矛纹,中間的交互由業(yè)務(wù)上去實(shí)現(xiàn)臂聋。這樣數(shù)據(jù)庫就可以分布在不同的實(shí)例上,能夠支持相對較高的并發(fā)和容量或南。

繼續(xù)發(fā)展的話孩等,實(shí)例依然是一個瓶頸,這時我們就要考慮做水平的拆分采够。把一個服務(wù)的數(shù)據(jù)分布到不同的實(shí)例上肄方,以支持?jǐn)U展、高并發(fā)蹬癌、大容量的數(shù)據(jù)庫服務(wù)权她。

拆分需要循序漸進(jìn),然后做服務(wù)的梳理逝薪,最后再做水平拆分隅要。

水平拆分會引入一些復(fù)雜性,研發(fā)方面需要考慮的東西就比較多董济,所以需要謹(jǐn)慎地做拆分步清。數(shù)據(jù)庫的拆分和業(yè)務(wù)架構(gòu)緊密結(jié)合,有時在業(yè)務(wù)上的一個小改動完全可以把壓力擋在數(shù)據(jù)庫之外虏肾。

水平拆分的難點(diǎn)

水平拆分的一個服務(wù)數(shù)據(jù)會分布到不同的底層數(shù)據(jù)庫上廓啊,所以會帶來一些復(fù)雜性。

系統(tǒng)架構(gòu)需要適應(yīng)數(shù)據(jù)庫的分布式封豪,就需要做一些改造谴轮。面臨的技術(shù)挑戰(zhàn)就是應(yīng)用需要處理復(fù)雜的分布式邏輯,比如分布式的事務(wù)吹埠、跨庫查詢第步。在穩(wěn)定性方面也會有一些挑戰(zhàn),但不是最主要的藻雌。主要是分布式的局限性雌续,分布式數(shù)據(jù)分布在不同的數(shù)據(jù)庫上,它不支持跨庫的join胯杭、分布式事務(wù)驯杜、以及全局sequence等。

解決方案:客戶端實(shí)現(xiàn)數(shù)據(jù)路由

在客戶端直接做一個配置做个,去實(shí)現(xiàn)路由的功能鸽心。它的好處就是不需要引入額外模塊滚局,整體架構(gòu)不變;程序的把控力強(qiáng)顽频,場景簡單方便使用藤肢;對代碼的侵入性強(qiáng);配置管理復(fù)雜糯景。

此方案不會引入額外的組建嘁圈,架構(gòu)上比較輕量,簡單場景使用尚可蟀淮,比如配置管理復(fù)雜等最住,不建議使用。

解決方案:數(shù)據(jù)庫中間件

實(shí)現(xiàn)自動分庫分表怠惶,對應(yīng)用透明涨缚;使用門檻極低,應(yīng)用改造量胁咧巍脓魏;方便的動態(tài)水平擴(kuò)容;針對分布式的各種定制功能通惫,如異構(gòu)索引茂翔、小表廣播等;最重要的是讽膏,有了數(shù)據(jù)庫中間件檩电,應(yīng)用看到還是單一的數(shù)據(jù)庫拄丰。

中間件的使用最大限度的屏蔽了分布式數(shù)據(jù)庫所引入的復(fù)雜性府树,極大降低了研發(fā)的門檻。


DRDS功能簡介

分庫分表是DRDS的核心功能料按,支持?jǐn)?shù)據(jù)的多維度切分和路由訪問奄侠;內(nèi)建讀寫分離功能,可以靈活配置訪問權(quán)重载矿;自帶全局唯一ID組件垄潮;查詢引擎識別和下推復(fù)雜查詢,兼容98% MySQL語法闷盔;彈性擴(kuò)容組件實(shí)現(xiàn)自動化在線水平擴(kuò)容弯洗。

DRDS物理框架

數(shù)據(jù)拆分,能夠組合1K個MySQL逢勾;分布式SQL查詢引擎與高度的SQL兼容性牡整;數(shù)據(jù)存儲的平滑擴(kuò)容;處理性能的彈性伸縮溺拱;讀寫分離(應(yīng)用透明)逃贝;小表廣播谣辞、跨庫join、全局sequence沐扳。

主庫和讀庫通過數(shù)據(jù)庫的原生復(fù)制實(shí)現(xiàn)泥从,數(shù)據(jù)是強(qiáng)一致的。DRDS會自動判斷請求沪摄,然后做分發(fā)躯嫉。事務(wù)性的操作全部路由到主庫上去,讀庫則承擔(dān)一些讀的操作杨拐。

把join從DRDS層往下推和敬,在MySQL層實(shí)現(xiàn)它的join,業(yè)務(wù)設(shè)計上要避免跨庫join戏阅。

分布式SQL規(guī)范設(shè)計:最佳實(shí)踐

查詢盡可能帶上分庫條件昼弟。如果把一個表拆分到底層的十個庫,查詢的時候每次都帶上一個拆分條件奕筐,DRDS能夠很清楚地把請求路由到底層的庫上舱痘。

Join的時候有幾種解決方案。一種是兩個表的分庫鍵都相等去做join离赫,這樣就能限定在一個庫上芭逝。還有一種是廣播表,join的字段不一樣渊胸,但是每個表都帶上分庫的條件旬盯,這樣還是會限定在同一個庫里面。

EasyDB:數(shù)據(jù)庫自動化管理平臺

資源:實(shí)時監(jiān)控數(shù)據(jù)庫和服務(wù)器空間的使用狀態(tài)翎猛。

高可用:云上高可用架構(gòu)設(shè)計胖翰,故障自動切換。

備份:定期的數(shù)據(jù)庫全量切厘,增量備份萨咳,可靈活配置。

監(jiān)控:異常情況下自動捕獲和告警疫稿,支持短信培他,郵件和微信通知。

性能:超過50個指標(biāo)性能趨勢和SQL采集遗座,實(shí)時監(jiān)控數(shù)據(jù)庫的運(yùn)行狀態(tài)舀凛。

日志:數(shù)據(jù)庫錯誤日志采集。

安全:數(shù)據(jù)庫賬號和操作的審計途蒋,基于服務(wù)器的安全設(shè)計猛遍。

我今天的分享就到這里,謝謝大家!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末螃壤,一起剝皮案震驚了整個濱河市抗果,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奸晴,老刑警劉巖冤馏,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寄啼,居然都是意外死亡逮光,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門墩划,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涕刚,“玉大人,你說我怎么就攤上這事乙帮《拍” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵察净,是天一觀的道長驾茴。 經(jīng)常有香客問我,道長氢卡,這世上最難降的妖魔是什么锈至? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮译秦,結(jié)果婚禮上峡捡,老公的妹妹穿的比我還像新娘。我一直安慰自己筑悴,他們只是感情好们拙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雷猪,像睡著了一般睛竣。 火紅的嫁衣襯著肌膚如雪晰房。 梳的紋絲不亂的頭發(fā)上求摇,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天,我揣著相機(jī)與錄音殊者,去河邊找鬼与境。 笑死,一個胖子當(dāng)著我的面吹牛猖吴,可吹牛的內(nèi)容都是我干的摔刁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼海蔽,長吁一口氣:“原來是場噩夢啊……” “哼共屈!你這毒婦竟也來了绑谣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拗引,失蹤者是張志新(化名)和其女友劉穎借宵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矾削,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壤玫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哼凯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欲间。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖断部,靈堂內(nèi)的尸體忽然破棺而出猎贴,到底是詐尸還是另有隱情,我是刑警寧澤蝴光,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布嘱能,位于F島的核電站,受9級特大地震影響虱疏,放射性物質(zhì)發(fā)生泄漏惹骂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一做瞪、第九天 我趴在偏房一處隱蔽的房頂上張望对粪。 院中可真熱鬧,春花似錦装蓬、人聲如沸著拭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽儡遮。三九已至,卻和暖如春暗赶,著一層夾襖步出監(jiān)牢的瞬間鄙币,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工蹂随, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留十嘿,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓岳锁,卻偏偏與公主長得像绩衷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

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