MySQL技術(shù)專題(4)MySQL分布式系統(tǒng)架構(gòu)設(shè)計(jì)偏向擴(kuò)容問題+業(yè)務(wù)拆分

分庫分表

隨著數(shù)據(jù)量的不斷增長,數(shù)據(jù)庫的發(fā)展主要經(jīng)歷以下幾個步驟:

  • 1主-1從架構(gòu)
  • 雙主-多從架構(gòu),讀寫分離
  • 表分區(qū)灯萍,提高并發(fā)
  • 分表,提高并發(fā)
  • Master更換SSD
  • 分庫每聪,分表竟稳,提高并發(fā)

分庫分表實(shí)現(xiàn)過程

可以將業(yè)務(wù)庫劃分成16個庫,每個庫64個表進(jìn)行存儲熊痴,總共1024個表,MySQL單表性能超過千萬級別會導(dǎo)致性能嚴(yán)重下降聂宾,假設(shè)按千萬計(jì)算果善,最高可以存儲百億級數(shù)據(jù)量。隨著存儲問題的解決系谐,但復(fù)雜度會隨著增加:

多庫怎么保證生成的全局唯一ID

查詢復(fù)雜度的增加巾陕;

例如:商城購物的訂單中心,當(dāng)買家查詢訂單時纪他,應(yīng)該去哪個庫哪個表里查找鄙煤,賣家應(yīng)該去哪查;再大的存儲量茶袒,隨著數(shù)據(jù)量的增長梯刚,終究是會遇到瓶頸,該怎么擴(kuò)容薪寓。

全局唯一訂單號

采用Twitter snowflake方案亡资,全劇唯一ID生成由:時間戳+機(jī)器ID+自增序列(+userid后兩位);

訂單的生成過程直接在應(yīng)用實(shí)例中生成向叉,直接在內(nèi)存中計(jì)算锥腻,且計(jì)算過程分散到每臺應(yīng)用實(shí)例中,解決性能問題母谎,userid后兩位在后面解釋瘦黑。

數(shù)據(jù)庫連接問題

分庫分表后,要連接數(shù)據(jù)庫變的復(fù)雜起來,分為兩種方案:

直連代碼適配模式

此種方式需要在應(yīng)用代碼中幸斥,自己計(jì)算訂單應(yīng)該進(jìn)入哪個庫匹摇,可取訂單的后兩位,先對庫16進(jìn)行取模睡毒,再對表64取模来惧,從而確定。優(yōu)點(diǎn)是直連數(shù)據(jù)庫性能更好演顾,缺點(diǎn)是代碼復(fù)雜度增加供搀。

通過中間價(jià)連接

服務(wù)中間價(jià)可以使用阿里的mycat連接,具體使用查看mycat文檔钠至。優(yōu)點(diǎn):代碼實(shí)現(xiàn)簡單葛虐,跟分庫前差不多。

數(shù)據(jù)查詢操作

用戶需要查詢數(shù)據(jù)的時候棉钧,只有userid屿脐,并不知道數(shù)據(jù)存在哪個庫哪張表中,從每個庫每個表中遍歷一遍不現(xiàn)實(shí)宪卿。所以還要對唯一編號進(jìn)行改進(jìn)的诵,之前是:時間戳+機(jī)器ID+自增序列。現(xiàn)在此ID的后面加上userid的后兩位佑钾,時間戳+機(jī)器ID+自增序列+userid后兩位西疤。

例如:訂單入庫取模的后兩位即userid后兩位,即同一個買家的所有訂單都會存入同一個表中休溶,通過此設(shè)計(jì)買家即可找到訂單號應(yīng)該在哪個表中代赁。

擴(kuò)容問題

此方案已經(jīng)不是單純的通過訂單號查找訂單,還需要通過userid查找訂單兽掰,其次是訂單具有時間特性芭碍,用戶查詢的大部分都是最近的訂單,3月前的訂單很少會查看孽尽,所以不適合進(jìn)行擴(kuò)容窖壕,特別適合遷移歷史數(shù)據(jù),將3個月前的數(shù)據(jù)遷移到歷史數(shù)據(jù)庫中泻云,從而解決容量增長的問題艇拍。

業(yè)務(wù)拆分

業(yè)務(wù)極其復(fù)雜,不只是訂單號的生成插入等宠纯,還要減庫存卸夕、支付等一系列的操作。所以應(yīng)該通過消息隊(duì)列將業(yè)務(wù)進(jìn)行拆分婆瓜,本步驟只做訂單生成的操作快集,通過消息隊(duì)列實(shí)現(xiàn)數(shù)據(jù)的最終一致性贡羔。

多主架構(gòu)

image
?著作權(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)容