原創(chuàng)2016-05-25趙強(qiáng)壹佰案例
壹佰案例
微信號(hào)Top100Case
功能介紹TOP?100軟件案例研究峰會(huì)是科技界一年一度案例研究盛會(huì)集侯,每年甄選有代表的100個(gè)技術(shù)創(chuàng)新/研發(fā)管理案例叭莫,旨在揭幕100件案例背后的思考迂尝、長尾價(jià)值,為聽眾提煉最佳學(xué)習(xí)路徑硫兰,幫助他人的項(xiàng)目或團(tuán)隊(duì)獲得啟示、成長,正如"他山之石莹痢,可以攻玉"呵恢。
2016年6月25-26日鞠值,第27屆MPD技術(shù)管理工作坊將在深圳華僑城洲際酒店舉行。本次工作坊渗钉,我們邀請(qǐng)了新浪微博技術(shù)經(jīng)理肖鵬老師彤恶,分享《新浪微博數(shù)據(jù)庫的六個(gè)變革》, 從時(shí)間線的維度解析新浪微博數(shù)據(jù)庫和數(shù)據(jù)庫平臺(tái)支持團(tuán)隊(duì)的成長以及技術(shù)變更鳄橘,希望為處于成長期的聽眾帶來“前車之鑒”声离。
壹佰案例在MPD開始前采訪了肖鵬老師,先行“劇透”新浪微博數(shù)據(jù)庫的技術(shù)秘密瘫怜。
壹佰案例:請(qǐng)肖鵬老師先簡單介紹一下自己抵恋,您關(guān)注的技術(shù)領(lǐng)域有哪些?
肖鵬:我目前在新浪微博研發(fā)中心平臺(tái)研發(fā)部負(fù)責(zé)數(shù)據(jù)庫相關(guān)工作宝磨,個(gè)人比較關(guān)注數(shù)據(jù)庫的高可用弧关、高可靠以及性能和架構(gòu)優(yōu)化方面。
之前比較集中在MySQL方向唤锉, 近幾年也開始接觸NoSQL世囊,比如Redis、HBase等窿祥,對(duì)于涉及數(shù)據(jù)方面的架構(gòu)設(shè)計(jì)株憾、優(yōu)化以及大規(guī)模集群運(yùn)維有一定的心得。
壹佰案例:簡單介紹下微博數(shù)據(jù)庫的概況晒衩,除了MySQL嗤瞎、Redis還采用了哪些技術(shù)?
肖鵬:微博數(shù)據(jù)庫主流使用MySQL和Redis听系,輔助一定的HBase贝奇,并且由于緩存和隊(duì)列和數(shù)據(jù)庫的關(guān)聯(lián)比較緊密,我們也是一起負(fù)責(zé)的靠胜,這樣就形成了后端數(shù)據(jù)層的一個(gè)閉環(huán)掉瞳,所有模塊都是由我們團(tuán)隊(duì)負(fù)責(zé)的毕源,這樣就減少了溝通,并讓DBA對(duì)整個(gè)業(yè)務(wù)架構(gòu)有更深層次的把控陕习。
另外除了經(jīng)典的MySQL和Redis之外霎褐,我們還自研了一些周邊的中間件系統(tǒng),比如Redis中間件Tribe该镣,以及異構(gòu)數(shù)據(jù)同步的Databus等冻璃。
壹佰案例:微博的什么業(yè)務(wù)存在NoSQL上,什么業(yè)務(wù)存在MySQL上损合,這樣做的選擇是什么俱饿?
肖鵬:在技術(shù)選型上,主要還是根據(jù)業(yè)務(wù)的具體場(chǎng)景塌忽。一般來說對(duì)于高并發(fā)低容量的(尤其是對(duì)響應(yīng)時(shí)間非常敏感的業(yè)務(wù))拍埠,我們會(huì)建議使用Redis,然后由于我們內(nèi)部的Redis進(jìn)行了自定制土居,可以作為cache也可以作為storage枣购,所以會(huì)根據(jù)業(yè)務(wù)的整個(gè)架構(gòu)決定是當(dāng)cache使用,還是當(dāng)storge使用擦耀。
對(duì)于其它的我們都會(huì)建議使用MySQL棉圈,畢竟MySQL是一個(gè)相當(dāng)通用的數(shù)據(jù)庫,而對(duì)于一些類似于日志類的多寫少讀眷蜓,并且預(yù)估容量會(huì)比較大的分瘾,我們會(huì)使用TokuDB引擎來解決。
最近吁系,由于Redis的數(shù)據(jù)結(jié)構(gòu)對(duì)于開發(fā)非常簡單易用德召,所以我們很多的需求都轉(zhuǎn)向了Redis,我們也在調(diào)研內(nèi)存落地到SSD盤上的解決方案汽纤。
壹佰案例:通過一些資料我們得知上岗,微博2015年在Redis的開發(fā)上下了很大力氣,具體做了哪些工作蕴坪,解決了哪些問題肴掷?
肖鵬:我們?cè)?015年主要面臨的問題是Redis容量變大的調(diào)整,很多單實(shí)例突破到100G這個(gè)量級(jí)背传,給我們的拆分工作帶來了很多困難呆瞻,為此我們專門開發(fā)了Redis中間件Tribe來解決這個(gè)問題。
壹佰案例:春節(jié)紅包對(duì)微博數(shù)據(jù)庫這塊有哪些挑戰(zhàn)径玖?微博是如何應(yīng)對(duì)的痴脾?
肖鵬:春節(jié)紅包主要的挑戰(zhàn)還是短時(shí)間內(nèi)的高并發(fā)問題,由于微博的紅包是公開性質(zhì)的挺狰,所以面臨一個(gè)紅包會(huì)有成千上萬人同時(shí)搶的問題明郭,這種高并發(fā)會(huì)對(duì)數(shù)據(jù)庫帶來很大的并發(fā)鎖壓力。
針對(duì)這個(gè)問題丰泊,我們先在整體架構(gòu)上進(jìn)行了優(yōu)化薯定,分多層進(jìn)行過濾,爭取做到到數(shù)據(jù)層的壓力是縮小的而不是放大的瞳购;第二就是根據(jù)業(yè)務(wù)特點(diǎn)利用Redis的高并發(fā)特點(diǎn)來進(jìn)行抗量话侄,然后通過隊(duì)列進(jìn)行消峰,盡量保障到達(dá)MySQL層是相對(duì)串行的学赛;最后年堆,對(duì)于MySQL還是進(jìn)行拆庫拆表,盡量利用多實(shí)例來解決高并發(fā)問題盏浇。
壹佰案例:您mpd的話題是微博數(shù)據(jù)庫六個(gè)變革变丧,可否簡單劇透下六個(gè)變革都是什么?以及做變革的背景绢掰。
肖鵬:這次主題主要是對(duì)微博從無到有的過程中數(shù)據(jù)庫如何在滿足業(yè)務(wù)需求的前提下痒蓬,不斷提升平臺(tái)的可靠性和可用性,并使用自動(dòng)化努力提高工作效率進(jìn)行總結(jié)滴劲」ド梗基本上,會(huì)按照時(shí)間維度來進(jìn)行總結(jié)班挖。
?業(yè)務(wù)解藕鲁捏,平臺(tái)架構(gòu)改造
?內(nèi)存為王,引入Redis
?長尾效應(yīng)萧芙,引入HBase和TokuDB
?效率第一给梅,自動(dòng)化建設(shè)
?服務(wù)化,自助平臺(tái)的開發(fā)
?彈性伸縮双揪,云時(shí)代的到來
以上六個(gè)變更基本都是隨著業(yè)務(wù)發(fā)展需求而進(jìn)行的破喻,整體上可以用“發(fā)現(xiàn)問題,解決問題”來總結(jié)盟榴。我將在深圳MPD上用180分鐘的時(shí)間詳細(xì)講解以上內(nèi)容曹质。
壹佰案例:微博這種體量的數(shù)據(jù)肯定面臨拆庫的問題,有什么經(jīng)驗(yàn)分享嗎擎场?
肖鵬:開玩笑的說我們新人培訓(xùn)的第一個(gè)內(nèi)容就是數(shù)據(jù)庫拆分羽德,由于我們經(jīng)常進(jìn)行數(shù)據(jù)拆分,所以也有一些經(jīng)驗(yàn)心得迅办。
第一要理解業(yè)務(wù)形態(tài)宅静,拆分后的數(shù)據(jù)應(yīng)該滿足業(yè)務(wù)需求,并且盡量不增加SQL開發(fā)的復(fù)雜程度站欺。
第二就是要寫具體的方案姨夹,一定要考慮如何進(jìn)行讀寫服務(wù)的切換纤垂,開發(fā)需要如何進(jìn)行配合。
第三也就是最重要的磷账,就是一定要有回退方案峭沦,一旦拆分失敗,不能影響線上業(yè)務(wù)的正常運(yùn)行也不要出現(xiàn)丟數(shù)據(jù)的情況發(fā)生逃糟。
壹佰案例:作為數(shù)據(jù)庫領(lǐng)域的“老司機(jī)”吼鱼,您對(duì)新手DBA有什么建議嗎?
肖鵬:有幾點(diǎn)建議新人的绰咽。
第一菇肃,數(shù)據(jù)庫入門的門檻說高不高,說低也不低取募,如果要從事這行琐谤,最好將MVCC,ACID玩敏,CAP等理論搞清楚笑跛,并沉下心系統(tǒng)地通讀一本MySQL的書籍,這樣有助于整體了解數(shù)據(jù)庫聊品,不要光靠網(wǎng)上的各種文章博客來學(xué)習(xí)飞蹂,否則容易“以偏概全”;
第二翻屈,數(shù)據(jù)庫實(shí)踐意義很重陈哑,有條件最好實(shí)際操作,比如復(fù)制伸眶,比如切主庫惊窖,比如拆庫。
第三厘贼,鍛煉寫文檔畫架構(gòu)圖的能力界酒,很多DBA自己明白,但是給別人就講不明白了嘴秸,這樣對(duì)部門來說不利于知識(shí)傳承毁欣,對(duì)個(gè)人也不好。
第四岳掐,最后一點(diǎn)凭疮,如果有可能最好選擇一些大平臺(tái)進(jìn)行學(xué)習(xí),這樣成長的速度會(huì)飛快串述,因?yàn)榱孔円l(fā)質(zhì)變执解,在海量的環(huán)境下面對(duì)的問題和挑戰(zhàn)是完全不一樣的。
擴(kuò)展閱讀:
專訪58沈劍:除了架構(gòu)纲酗,我還想認(rèn)真談?wù)劰芾?/a>
QQ億級(jí)日活躍業(yè)務(wù)后臺(tái)核心技術(shù)揭秘
億級(jí)日PV的魅族云同步的核心協(xié)議與架構(gòu)實(shí)踐