數(shù)據(jù)庫并發(fā)2萬就跪了?你需要這份指導性的知識框架

來自公眾號:有關(guān)SQL
作者Lenis

如果各位看官的 SQL 數(shù)據(jù)庫真有 2W+ 高并發(fā)谐岁,那真是要恭喜你墨礁。你已經(jīng)比很多公司的 MIS 都要前衛(wèi)得多幢竹。2W 和 2K 差別有那么大嗎,嗯恩静,真是有的焕毫。2K 并發(fā)的 MIS 系統(tǒng)也經(jīng)常有無法訪問,timeout 的異常驶乾,處理這些異常已經(jīng)夠很多朋友苦惱的了邑飒。2W+ 的并發(fā)那需要懂的知識框架就更復雜了。

筆者曾服務(wù)了 500W+ 用戶的電商系統(tǒng)级乐,7*24 小時的噩夢再也不想見

前幾年在一家擁有 500 多萬直銷顧問的團隊做電商平臺疙咸。平時的流量很平穩(wěn),基本都在千把风科,月底拼業(yè)績才會沖一沖撒轮,來個 1W+ 的并發(fā)。大部分的數(shù)據(jù)庫開發(fā)人員在日常中還是沒心沒肺沒壓力的贼穆。但電商系統(tǒng)有個慣例题山,都是淘寶帶出來的,會搞促銷故痊,類似于雙 11. 一到這時間段顶瞳,必須隨時警惕流量是不是井噴,一旦跨越紅線,系統(tǒng)就跟前期的 12306 一樣慨菱,頻頻延遲焰络。隨著 DBA 組的介入,才慢慢搞定這難題抡柿。本文的初衷也來自于這段經(jīng)歷的總結(jié)舔琅。

單實例數(shù)據(jù)庫應用

這種應用架構(gòu)最簡單,UI + 應用服務(wù)器 + 數(shù)據(jù)庫服務(wù)器洲劣,所有的請求备蚓,無論讀寫都直接拋給數(shù)據(jù)庫。往往項目初期囱稽,為了迅速的證明自己的點子靠譜郊尝,拿到市場,我們會選擇這樣的架構(gòu)來實現(xiàn)產(chǎn)品战惊。此時往往 10 萬用戶注冊了流昏,但每天訪問的人數(shù)剛過 200, 每張數(shù)據(jù)庫表的總數(shù)吞获,最大也不會超過 5000 條况凉。這樣的應用,開發(fā)能力強的各拷,1 個人就可以搞定刁绒,業(yè)務(wù)復雜的需要分前端和后端。但無論如何都屬于基礎(chǔ)項目烤黍,如果你工作 3知市,4 了還是停留在這種模式下,那該補補課了速蕊。

image

事物總是在發(fā)展之中的嫂丙,只要系統(tǒng)正常運行,總有一天用戶量會加大规哲,隨之而來的請求會超乎你的想象(前提你是做了 pv, uv 的數(shù)據(jù)分析)跟啤,很快這種架構(gòu)會遇到用戶超過 100 萬,日訪問量超過 20 萬唉锌,峰值并發(fā) 2 萬腥光,而數(shù)據(jù)庫的表會趨近于億級的量。此時應用系統(tǒng)如果還是建立在當初的硬件基礎(chǔ)上(比如 16GB糊秆,16 核,240GB 硬盤)應該會明顯感覺得到拖卡慢的尷尬议双,增多的是用戶的抱怨和投訴痘番。就像 12306 前期的購票一樣,往往輪到你的時候,票沒了汞舱。

image

多實例數(shù)據(jù)庫

遇到流量起來的應用伍纫,如果壓力確定是在數(shù)據(jù)庫上了,那么分庫是必然的事情了昂芜。將一個大庫拆成若干小庫莹规,保持數(shù)據(jù)庫對象都一致,這樣每個小庫分攤掉一部分流量泌神,應用終將回歸第一種簡單架構(gòu)上來良漱,將用戶服務(wù)好。以現(xiàn)在的硬件服務(wù) 4000 個并發(fā)欢际,對于不復雜的商用沒有問題母市。具體能負責多少看系統(tǒng)上線后的 baseline (基線)監(jiān)測,這里我們假定 4000 并發(fā)损趋。所以分成 5 個相同的庫患久,來做分庫。這樣同時寫入 4000 并發(fā)夠用浑槽。

image

這里會遇到一個技術(shù)細節(jié)蒋失,就是分庫路由。如何將流量均攤到每個庫里桐玻,是需要研制算法的篙挽。比如已知全國用戶分布均衡,即華東畸冲、華北嫉髓、華西、華南和華中邑闲,各有 4000 用戶算行。我們依據(jù)地理位置分成 5 個庫,根據(jù)用戶身份證哈希成 5 個散列值苫耸,分別對應了這 5 臺數(shù)據(jù)庫州邢,用戶就被分流了。

只要用戶不是劇烈增長褪子,老板也滿意這種小而美的生意量淌,這樣的架構(gòu)可以一直沿用下去∠油剩基本不會有瓶頸呀枢。頂多就是時間長了,表數(shù)據(jù)越來越大了笼痛,我們用分庫的思想進行分表就可以了裙秋。當前年份(月份)數(shù)據(jù)放在主表里面琅拌,而歷史數(shù)據(jù)就歸檔到聚合表里;或者索性每月摘刑,每年分成子表存儲进宝,而跨時間段的查詢用視圖來控制。

但用戶的行為始終是不可控的枷恕,我么必須做一系列的事情來滿足和留住用戶党晋。比如促銷、打折徐块、團購等等未玻。這個時候,用戶的行為不僅僅是下個單買杯咖啡這么簡單了蛹锰。他們會大量查詢他們的數(shù)據(jù)深胳,帶來的是讀請求遠遠大于寫入請求。眾所周知铜犬,讀請求即使不影響寫入請求(比如 MVVC)舞终,但也會耗盡服務(wù)器的 CPU\IO\Network 資源。那么我們必須更進入一層癣猾,讀寫分離敛劝。

讀寫分離

讀寫分離是另一種分庫,但與前面的分庫意圖不一樣纷宇。分出來的庫和源庫一模一樣夸盟,且只讀不接收用戶的寫入請求。實現(xiàn)細節(jié)每個數(shù)據(jù)庫都不一樣像捶,也可以使用實時同步工具做上陕,詳情可以參考《Designing Data-Intensive Applications》這本書。不僅僅給出了指導思想拓春,更有每種數(shù)據(jù)庫的讀寫分離組件指南释簿。

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市硼莽,隨后出現(xiàn)的幾起案子庶溶,更是在濱河造成了極大的恐慌,老刑警劉巖懂鸵,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偏螺,死亡現(xiàn)場離奇詭異,居然都是意外死亡匆光,警方通過查閱死者的電腦和手機套像,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來终息,“玉大人凉夯,你說我怎么就攤上這事货葬。” “怎么了劲够?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長休傍。 經(jīng)常有香客問我征绎,道長,這世上最難降的妖魔是什么磨取? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任人柿,我火速辦了婚禮,結(jié)果婚禮上忙厌,老公的妹妹穿的比我還像新娘凫岖。我一直安慰自己,他們只是感情好逢净,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布哥放。 她就那樣靜靜地躺著,像睡著了一般爹土。 火紅的嫁衣襯著肌膚如雪甥雕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天胀茵,我揣著相機與錄音社露,去河邊找鬼。 笑死琼娘,一個胖子當著我的面吹牛峭弟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脱拼,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼瞒瘸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了挪拟?” 一聲冷哼從身側(cè)響起挨务,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎玉组,沒想到半個月后谎柄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡惯雳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年朝巫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片石景。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡劈猿,死狀恐怖拙吉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情揪荣,我是刑警寧澤筷黔,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站仗颈,受9級特大地震影響佛舱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挨决,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一请祖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧脖祈,春花似錦肆捕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至或舞,卻和暖如春荆姆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背映凳。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工胆筒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诈豌。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓仆救,卻偏偏與公主長得像,于是被迫代替她去往敵國和親矫渔。 傳聞我的和親對象是個殘疾皇子彤蔽,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

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