我公司的數(shù)據(jù)庫(kù)的演化史

自從我接手公司的時(shí)候,公司的數(shù)據(jù)庫(kù)基本就是單點(diǎn)裆熙,為了省錢端礼,一律低配,那個(gè)時(shí)候的數(shù)據(jù)庫(kù)和現(xiàn)在用的一樣入录,對(duì)于業(yè)務(wù)庫(kù)蛤奥,我們還是用的阿里云的RDS(MYSQL)。

我記得當(dāng)時(shí)線上就一個(gè)core庫(kù)僚稿,core庫(kù)就是存放一切業(yè)務(wù)數(shù)據(jù)凡桥,做了讀寫分離。


image.png

當(dāng)時(shí)為什么這么做呢蚀同,簡(jiǎn)單來說就是方便快捷缅刽,因?yàn)闃I(yè)務(wù)簡(jiǎn)單,最多的一張表的數(shù)據(jù)當(dāng)時(shí)也就100多萬(wàn)吧就是當(dāng)時(shí)的報(bào)名單的一個(gè)子表蠢络,那時(shí)候還做了個(gè)事兒衰猛,報(bào)名單有個(gè)查詢,就算加了索引速度也提不起來刹孔,當(dāng)時(shí)這個(gè)表的寬度巨寬啡省,各種字符集都在這張表里;查詢一次基本要在1S以上,當(dāng)時(shí)的解決方案就是把這個(gè)表的引擎改成myisam了卦睹,查詢立馬降低在120ms的樣子畦戒。

后來,隨著業(yè)務(wù)的發(fā)展结序,業(yè)務(wù)拆的越來越細(xì)障斋,流量也越來越大,core庫(kù)已經(jīng)不堪重負(fù)了徐鹤,于是垃环,開始拆分?jǐn)?shù)據(jù)庫(kù),同時(shí)把服務(wù)化也做了進(jìn)一步的拆分凳干,工程也獨(dú)立出來了(之前所有的項(xiàng)目都在一個(gè)project下晴裹,打個(gè)包這個(gè)酸爽)被济,這樣也做到了各個(gè)數(shù)據(jù)庫(kù)的隔離救赐,但帶來的問題是,很多級(jí)聯(lián)查詢查不到了只磷,運(yùn)營(yíng)的很多數(shù)據(jù)統(tǒng)計(jì)都做不了经磅,怎么辦嘞?

image.png

我們把core庫(kù)的核心業(yè)務(wù)獨(dú)立出來钮追,分離出商戶预厌、用戶、兼職元媚、報(bào)名單轧叽,并且把dubbo的服務(wù)化體系一個(gè)個(gè)和這幾個(gè)庫(kù)對(duì)齊,做到一個(gè)工程對(duì)應(yīng)一個(gè)DB刊棕,而core庫(kù)則是歷史老坑遺留地炭晒,沒有人敢碰,一碰就沾包甥角。

但因?yàn)槌杀镜膯栴}网严,2017年的時(shí)候,我們還是一分分錢的省下來過日子的嗤无,非常節(jié)儉震束;除了core庫(kù)之外,其他的RDS都是單點(diǎn)的当犯,并非高可用垢村,也不支持讀寫分離;可能這時(shí)候有些人說嚎卫,你這么做太危險(xiǎn)了嘉栓,這玩意數(shù)據(jù)庫(kù)跪了的話,這段時(shí)間業(yè)務(wù)就受很大影響了。實(shí)際上這事兒還真發(fā)生了胸懈,我記得當(dāng)時(shí)我們有一個(gè)庫(kù)担扑,整整掛了有5分鐘,5分鐘后才恢復(fù)的趣钱;但5分鐘對(duì)于當(dāng)年的公司來說涌献,影響還沒有到承受不了的程度,因此首有,單點(diǎn)數(shù)據(jù)庫(kù)在很長(zhǎng)時(shí)間內(nèi)燕垃,都是支撐業(yè)務(wù)的主要戰(zhàn)力。

隨著公司的發(fā)展井联,產(chǎn)品運(yùn)營(yíng)越來越多卜壕,運(yùn)營(yíng)后臺(tái)的需求與數(shù)據(jù)需求與日俱增,于是我們?yōu)樗麄儗iT重構(gòu)了一個(gè)運(yùn)營(yíng)后臺(tái)(簡(jiǎn)稱YY后臺(tái))烙常;那數(shù)據(jù)需求是怎么解決的呢轴捎,很簡(jiǎn)單,讓運(yùn)營(yíng)們直接去生產(chǎn)庫(kù)上去查蚕脏,當(dāng)然用戶敏感信息我們還是保密的侦副;但如果讓運(yùn)營(yíng)去線上去查,如果胡亂執(zhí)行sql驼鞭,那不是要對(duì)線上庫(kù)產(chǎn)生較大的影響了嗎秦驯?于是我們有了以下的改進(jìn)

image.png

我們通過dts將每個(gè)庫(kù)合成一個(gè)大庫(kù)third庫(kù),他自身也是個(gè)rds挣棕,負(fù)責(zé)和所有的業(yè)務(wù)庫(kù)做線上同步译隘,這個(gè)庫(kù)本身就相當(dāng)于我們的一個(gè)線上的備庫(kù),對(duì)他進(jìn)行查詢操作洛心,不會(huì)對(duì)線上造成影響固耘。

隨著公司的進(jìn)一步發(fā)展,數(shù)據(jù)量越來越大皂甘,并且也出現(xiàn)了埋點(diǎn)的數(shù)據(jù)玻驻,因此,我們建立了另一條埋點(diǎn)鏈路偿枕,這套鏈路最終會(huì)進(jìn)入離線計(jì)算maxcompute璧瞬;另外,業(yè)務(wù)數(shù)據(jù)也要進(jìn)入maxcompute里渐夸。

image.png

上圖的業(yè)務(wù)我們大概跑了有一整年嗤锉,在這一整年了,出現(xiàn)了一個(gè)問題墓塌,也就是出現(xiàn)在業(yè)務(wù)庫(kù)向third庫(kù)通過DTS這個(gè)環(huán)節(jié)的問題瘟忱;當(dāng)我們業(yè)務(wù)庫(kù)出現(xiàn)了表級(jí)的操作奥额,比如alter語(yǔ)句的時(shí)候,會(huì)觸發(fā)大量的binlog產(chǎn)生访诱,dts收到大量binlog后垫挨,會(huì)向third進(jìn)行同步;而third庫(kù)因?yàn)橐瑫r(shí)接收所有端的數(shù)據(jù)触菜,他的寫入能力遭遇瓶頸九榔,因此會(huì)阻塞在DTS上,導(dǎo)致third庫(kù)嚴(yán)重延時(shí)涡相,maxcompute也出現(xiàn)嚴(yán)重超時(shí)哲泊。我曾經(jīng)為了解決這個(gè)問題,去尋找高性能寫的數(shù)據(jù)庫(kù)的時(shí)候催蝗,會(huì)發(fā)現(xiàn)市面上大多數(shù)據(jù)庫(kù)都不滿足我這個(gè)場(chǎng)景及切威,高性能的rmdb,又要支持海量數(shù)據(jù)丙号;目前我所知道的基本就是oceanbase和tidb這兩者先朦。tidb不考慮,坑太多槽袄,oceanbase目前在公測(cè)烙无,不支持內(nèi)網(wǎng)锋谐,也不考慮遍尺;那后來采取的策略是,讓運(yùn)營(yíng)遷移到maxcompute上去查詢涮拗,雖然時(shí)效性不好乾戏,但也是一個(gè)長(zhǎng)期的方案,總不能讓運(yùn)營(yíng)一直去在線上數(shù)據(jù)庫(kù)是隨便玩耍呀三热,于是這個(gè)方案就變成這樣了鼓择,此時(shí)mysql的各個(gè)實(shí)例已經(jīng)進(jìn)化到了高可用,支持讀寫分離就漾。

image.png

我們通過maxcompute來直接從只讀庫(kù)拉取數(shù)據(jù)呐能,主要是依賴于maxcompute的高性能寫,并且只讀庫(kù)在同步binlog下抑堡,比dts的性能要高出一個(gè)數(shù)量級(jí)摆出,具體為什么可以去看一下dts的實(shí)現(xiàn);另外首妖,這個(gè)只讀庫(kù)一定不要做讀寫分離偎漫,因?yàn)樵趍axcompute去拉取數(shù)據(jù)庫(kù)的時(shí)候,這個(gè)時(shí)候mysql的iops可能是很高的有缆,如果這個(gè)時(shí)候有線上的請(qǐng)求過來象踊,是會(huì)造成請(qǐng)求阻塞延時(shí)的温亲,因此,只讀庫(kù)一定不能作為讀寫分離的實(shí)例杯矩。

到這里為止栈虚,和我們目前的架構(gòu)就基本一樣了,可能這里面缺少ES史隆、Redis等一些存儲(chǔ)节芥,這些主要是為業(yè)務(wù)服務(wù)的,我這里主要是側(cè)重講關(guān)于數(shù)據(jù)的持久化方案的演進(jìn)逆害。

——————————華麗的分割線————————————

那么我開始講一下我們后面要做的事情头镊,隨著數(shù)據(jù)量越來越大,公司對(duì)數(shù)據(jù)的實(shí)時(shí)性越來越高魄幕,maxcompute的離線處理相艇,已經(jīng)不能滿足我們的需求;線上很多業(yè)務(wù)要做流式處理纯陨,實(shí)時(shí)推薦坛芽;比如,一個(gè)用戶瀏覽了某些兼職翼抠,但沒有點(diǎn)擊報(bào)名咙轩,這說明這個(gè)用戶對(duì)這類兼職是不感興趣的,同時(shí)我們要把用戶行為實(shí)時(shí)發(fā)送到流式處理里阴颖,給用戶推送其他的類目活喊。我們采用行業(yè)標(biāo)桿FLINK做流式處理,用redis保存一些數(shù)據(jù)統(tǒng)計(jì)結(jié)果集量愧;我們也會(huì)有一些數(shù)據(jù)UI界面的產(chǎn)品钾菊,通過訪問redis來拿到實(shí)施的結(jié)果,比如偎肃,每天的日活煞烫、收入、使用時(shí)長(zhǎng)等累颂。

image.png

網(wǎng)關(guān)的加入滞详,我們會(huì)把記錄訪問的所有鏈路日志,通過網(wǎng)關(guān)做鑒權(quán)紊馏、限流料饥、輸出日志、黑白名單校驗(yàn)瘦棋、灰度等功能稀火,那在這張圖中,網(wǎng)關(guān)主要是把訪問的所有日志赌朋,上傳到KAFKA中凰狞,再轉(zhuǎn)交到FLINK中篇裁,通過FLINK來做用戶的數(shù)據(jù)做清洗,再將結(jié)構(gòu)化數(shù)據(jù)導(dǎo)入到安全中心赡若。而安全中心要做的就是所有的風(fēng)控判斷达布,最后把數(shù)據(jù)沉淀到maxcompute里做機(jī)器學(xué)習(xí),不斷優(yōu)化風(fēng)控規(guī)則逾冬。

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末黍聂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子身腻,更是在濱河造成了極大的恐慌产还,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘀趟,死亡現(xiàn)場(chǎng)離奇詭異脐区,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)她按,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門牛隅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酌泰,你說我怎么就攤上這事媒佣。” “怎么了陵刹?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵默伍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我授霸,道長(zhǎng)巡验,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任碘耳,我火速辦了婚禮,結(jié)果婚禮上框弛,老公的妹妹穿的比我還像新娘辛辨。我一直安慰自己,他們只是感情好瑟枫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布斗搞。 她就那樣靜靜地躺著,像睡著了一般慷妙。 火紅的嫁衣襯著肌膚如雪僻焚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天膝擂,我揣著相機(jī)與錄音虑啤,去河邊找鬼隙弛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛狞山,可吹牛的內(nèi)容都是我干的全闷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼萍启,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼总珠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起勘纯,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤局服,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后驳遵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腌逢,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年超埋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搏讶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霍殴,死狀恐怖媒惕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情来庭,我是刑警寧澤妒蔚,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站月弛,受9級(jí)特大地震影響肴盏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜帽衙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一菜皂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厉萝,春花似錦恍飘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至翩剪,卻和暖如春乳怎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背前弯。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工蚪缀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秫逝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓椿胯,卻偏偏與公主長(zhǎng)得像筷登,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哩盲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

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