專訪新浪微博肖鵬:支撐萬億級訪問的微博後端是怎麼煉成的

壹佰案例發表於2016-06-03

enter image description here 壹佰案例採訪了新浪微博技術經理肖鵬老師,“劇透”新浪微博資料庫的技術祕密。

壹佰案例:請肖鵬老師先簡單介紹一下自己,您關注的技術領域有哪些?

肖鵬:我目前在新浪微博研發中心平臺研發部負責資料庫相關工作,個人比較關注資料庫的高可用、高可靠以及效能和架構優化方面。

之前比較集中在MySQL方向, 近幾年也開始接觸NoSQL,比如Redis、HBase等,對於涉及資料方面的架構設計、優化以及大規模叢集運維有一定的心得。

壹佰案例:簡單介紹下微博資料庫的概況,除了MySQL、Redis還採用了哪些技術?

肖鵬:微博資料庫主流使用MySQL和Redis,輔助一定的HBase,並且由於快取和佇列和資料庫的關聯比較緊密,我們也是一起負責的,這樣就形成了後端資料層的一個閉環,所有模組都是由我們團隊負責的,這樣就減少了溝通,並讓DBA對整個業務架構有更深層次的把控。

另外除了經典的MySQL和Redis之外,我們還自研了一些周邊的中介軟體系統,比如Redis中介軟體Tribe,以及異構資料同步的Databus等。

壹佰案例:微博的什麼業務存在NoSQL上,什麼業務存在MySQL上,這樣做的選擇是什麼?

肖鵬:在技術選型上,主要還是根據業務的具體場景。一般來說對於高併發低容量的(尤其是對響應時間非常敏感的業務),我們會建議使用Redis,然後由於我們內部的Redis進行了自定製,可以作為cache也可以作為storage,所以會根據業務的整個架構決定是當cache使用,還是當storge使用。

對於其它的我們都會建議使用MySQL,畢竟MySQL是一個相當通用的資料庫,而對於一些類似於日誌類的多寫少讀,並且預估容量會比較大的,我們會使用TokuDB引擎來解決。

最近,由於Redis的資料結構對於開發非常簡單易用,所以我們很多的需求都轉向了Redis,我們也在調研記憶體落地到SSD盤上的解決方案。

壹佰案例:通過一些資料我們得知,微博2015年在Redis的開發上下了很大力氣,具體做了哪些工作,解決了哪些問題?

肖鵬:我們在2015年主要面臨的問題是Redis容量變大的調整,很多單例項突破到100G這個量級,給我們的拆分工作帶來了很多困難,為此我們專門開發了Redis中介軟體Tribe來解決這個問題。

壹佰案例:春節紅包對微博資料庫這塊有哪些挑戰?微博是如何應對的?

肖鵬:春節紅包主要的挑戰還是短時間內的高併發問題,由於微博的紅包是公開性質的,所以面臨一個紅包會有成千上萬人同時搶的問題,這種高併發會對資料庫帶來很大的併發鎖壓力。

針對這個問題,我們先在整體架構上進行了優化,分多層進行過濾,爭取做到到資料層的壓力是縮小的而不是放大的;第二就是根據業務特點利用Redis的高併發特點來進行抗量,然後通過佇列進行消峰,儘量保障到達MySQL層是相對序列的;最後,對於MySQL還是進行拆庫拆表,儘量利用多例項來解決高併發問題。

壹佰案例:您mpd的話題是微博資料庫六個變革,可否簡單劇透下六個變革都是什麼?以及做變革的背景。

肖鵬:這次主題主要是對微博從無到有的過程中資料庫如何在滿足業務需求的前提下,不斷提升平臺的可靠性和可用性,並使用自動化努力提高工作效率進行總結。基本上,會按照時間維度來進行總結。 •業務解藕,平臺架構改造

•記憶體為王,引入Redis

•長尾效應,引入HBase和TokuDB

•效率第一,自動化建設

•服務化,自助平臺的開發

•彈性伸縮,雲時代的到來

以上六個變更基本都是隨著業務發展需求而進行的,整體上可以用“發現問題,解決問題”來總結。我將在深圳MPD上用180分鐘的時間詳細講解以上內容。

壹佰案例:微博這種體量的資料肯定面臨拆庫的問題,有什麼經驗分享嗎?

肖鵬:開玩笑的說我們新人培訓的第一個內容就是資料庫拆分,由於我們經常進行資料拆分,所以也有一些經驗心得。

第一要理解業務形態,拆分後的資料應該滿足業務需求,並且儘量不增加SQL開發的複雜程度。

第二就是要寫具體的方案,一定要考慮如何進行讀寫服務的切換,開發需要如何進行配合。

第三也就是最重要的,就是一定要有回退方案,一旦拆分失敗,不能影響線上業務的正常執行也不要出現丟資料的情況發生。

壹佰案例:作為資料庫領域的“老司機”,您對新手DBA有什麼建議嗎?

肖鵬:有幾點建議新人的。 第一,資料庫入門的門檻說高不高,說低也不低,如果要從事這行,最好將MVCC,ACID,CAP等理論搞清楚,並沉下心繫統地通讀一本MySQL的書籍,這樣有助於整體瞭解資料庫,不要光靠網上的各種文章部落格來學習,否則容易“以偏概全”;

第二,資料庫實踐意義很重,有條件最好實際操作,比如複製,比如切主庫,比如拆庫。

第三,鍛鍊寫文件畫架構圖的能力,很多DBA自己明白,但是給別人就講不明白了,這樣對部門來說不利於知識傳承,對個人也不好。

第四,最後一點,如果有可能最好選擇一些大平臺進行學習,這樣成長的速度會飛快,因為量變引發質變,在海量的環境下面對的問題和挑戰是完全不一樣的。

「肖鵬老師將於6月25-26日在深圳MPD現場分享《新浪微博資料庫的六個變革》, 從時間線的維度解析新浪微博資料庫和資料庫平臺支援團隊的成長以及技術變更,希望為處於成長期的聽眾帶來“前車之鑑”。 給小編留言有機會獲得免費體驗票哦~」

相關文章