專訪新浪微博肖鵬:支撐萬億級訪問的微博後端是怎麼煉成的
壹佰案例採訪了新浪微博技術經理肖鵬老師,“劇透”新浪微博資料庫的技術祕密。
壹佰案例:請肖鵬老師先簡單介紹一下自己,您關注的技術領域有哪些?
肖鵬:我目前在新浪微博研發中心平臺研發部負責資料庫相關工作,個人比較關注資料庫的高可用、高可靠以及效能和架構優化方面。
之前比較集中在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現場分享《新浪微博資料庫的六個變革》, 從時間線的維度解析新浪微博資料庫和資料庫平臺支援團隊的成長以及技術變更,希望為處於成長期的聽眾帶來“前車之鑑”。 給小編留言有機會獲得免費體驗票哦~」
相關文章
- 肖鵬:微博資料庫那些事兒(圖靈訪談)資料庫圖靈
- ruby 訪問新浪微博API post方式和get方式API
- 新浪微博APIAPI
- iOS 仿新浪微博iOS
- 談談新浪微博背後的那些演算法演算法
- 分享到QQ空間、新浪微博、騰訊微博的程式碼!(收藏)
- 新浪微博分享不跳轉
- iOS高仿新浪微博iOS
- 讓ubuntu支援新浪微博Ubuntu
- Python實現微博爬蟲,爬取新浪微博Python爬蟲
- 億級使用者下的新浪微博平臺架構架構
- Win10系統下新浪微博影片總是自動播放怎麼辦Win10
- 支撐微博億級社交平臺,小白也能玩轉Redis叢集(實戰篇)Redis
- 支撐微博億級社交平臺,小白也能玩轉Redis叢集(原理篇)Redis
- 新浪微博圖床架構解析圖床架構
- PHP+新浪微博開放平臺+新浪雲平臺(SAE)開發微博應用——必須交待的幾個問題PHP
- Win10系統下新浪微博視訊總是自動播放怎麼辦Win10
- GitHub 上這款新浪微博爬蟲專案,讓你輕鬆掌握微博資料!Github爬蟲
- 百億訪問量的監控平臺如何煉成?
- 批次複製新浪微博相簿圖片及影片,你都是怎麼操作的呢?
- 新浪微博API生成短連結API
- 轉發新浪微博程式猿心得
- jQuery仿新浪微博資訊展播效果jQuery
- 自動釋出新浪微博javaJava
- 使用python呼叫新浪微博介面Python
- Scrapy框架的使用之Scrapy爬取新浪微博框架
- Twitter同步新浪微博的一個解決方案
- 資料:新浪微博企業微博釋出時間規律研究
- 遠端訪問技術是什麼
- PHP判斷是手機移動端訪問還是PC端訪問的函式PHP函式
- 千億級HttpDNS服務是怎樣煉成的httpdDNS
- 非結構化資料暴增,企業如何穩定高效的支撐日均百億級訪問
- 微博首席架構師楊衛華:新浪微博技術架構分析架構
- 新浪微博技術架構分析-微博首席架構師楊衛華架構
- 新浪微博私信,即時聊天介面研究
- JavaScript仿新浪微博搜尋框功能JavaScript
- 如何填補友盟分享新浪微博的那些坑
- 簡易版Swiper是怎麼煉成的