您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

淺談在MySQL應(yīng)用上的挑戰(zhàn)

大?。?/span>0.05 MB 人氣: 2017-10-11 需要積分:1
2016年4月22日-23日,由CSDN重磅打造的數(shù)據(jù)庫核心技術(shù)與實戰(zhàn)應(yīng)用峰會、互聯(lián)網(wǎng)應(yīng)用架構(gòu)實戰(zhàn)峰會將在深圳舉行。
  這是繼3月中旬,SDCC之架構(gòu)&數(shù)據(jù)庫峰會在上海圓滿收官后的再一次相聚。上海站上,18位技術(shù)講師給超過500名的現(xiàn)場參會者帶來了精彩分享,火爆程度超出主辦方想象。
  即將到來的SDCC深圳技術(shù)峰會講師陣容強大,主辦方邀請了來自于百度、阿里、騰訊、滴滴出行、攜程、平安科技AdMaster、華為、京東、唯品會、一號店、中國電信、閱文集團(tuán)等公司的技術(shù)骨干、首席架構(gòu)師來為與會者分享演講和交流,必定是一場技術(shù)人的饕餮盛宴?!灸壳跋迺r6折,點擊這里搶票】
  在即將到來的SDCC深圳技術(shù)峰會召開之際,由CSDN負(fù)責(zé)數(shù)據(jù)庫技術(shù)領(lǐng)域的小編采訪了一些參會講師,談?wù)勊麄儗⒃诒敬位顒铀窒淼膬?nèi)容。
  
  騰訊高級軟件工程師 雷海林
  本期采訪的講師是來自騰訊高級軟件工程師 雷海林,他有著10年以上的Linux后臺Server開發(fā)經(jīng)驗,目前主要從事分布式Cache、實時大數(shù)據(jù)處理引擎,分布式MySQL(TDSQL)設(shè)計和開發(fā)工作。
  他將在SDCC 2016 深圳站之?dāng)?shù)據(jù)庫峰會上分享的主題是《 騰訊金融云數(shù)據(jù)庫備份恢復(fù)原理與實踐 》,全部數(shù)據(jù)庫技術(shù)峰會講師情況和議題等可參見:SDCC深圳站數(shù)據(jù)庫/大數(shù)據(jù)專場講師議題全公布。
  以下是專訪內(nèi)容:
  CSDN:首先請簡單介紹下您和您所在的公司,以及目前所負(fù)責(zé)的領(lǐng)域。
  雷海林:我叫雷海林,現(xiàn)任職于騰訊公司TEG計費平臺部,目前是騰訊金融級高一致性分布式數(shù)據(jù)庫TDSQL的技術(shù)負(fù)責(zé)人。
  CSDN:騰訊作為業(yè)內(nèi)知名企業(yè),您在騰訊擔(dān)任高級軟件工程師以來,有沒有給您留下印象深刻的人或事呢?
  雷海林:加入騰訊公司以來,從最初的很簡單的后臺Server開發(fā)開始,中途經(jīng)歷了各種跨IDC,跨城容災(zāi)技術(shù)方案的挑戰(zhàn),然后再到高一致性分布式Cache,實時大數(shù)據(jù)引擎的開發(fā),最后又因為SSD技術(shù)的大量普及和團(tuán)隊對分布式數(shù)據(jù)庫的要求,很幸運與小伙伴們一起實現(xiàn)了TDSQL,感覺技術(shù)是需要持續(xù)積累和堅持,要時刻擁抱變化,這樣機(jī)會來的時候才能及時抓住。
  CSDN:在開發(fā)過程中,您和您的團(tuán)隊遇到哪些技術(shù)難點,并且每個階段又是如何克服的呢?
  雷海林:我目前印象比較深的有如下幾個方面:
  我們團(tuán)隊雖然使用MySQL有上10年的歷史了,但是真正在做TDSQL的時候發(fā)現(xiàn)大家在MySQL源碼的積累上還是不多的,所以在做的過程是充滿了不確定性和忐忑,比如需要某個功能,那么不確定業(yè)界是否已經(jīng)有相關(guān)的討論或者補丁,自己做修改是否能融入MySQL等等,出現(xiàn)這些問題都是源于我們對MySQL缺乏足夠的了解,同時MySQL又已經(jīng)非常龐大了,因此我們需要補足這塊的知識。最終我們是采用7*12的工作制連續(xù)封閉了3個多月,仔細(xì)閱讀MySQL手冊,閱讀各種關(guān)于MySQL內(nèi)核,高可用技術(shù),MySQL運營優(yōu)化相關(guān)的書籍和博客,分模塊熟悉MySQL代碼等等,再逐漸引入對MySQL,Pg,Oracle等數(shù)據(jù)庫熟悉和感興趣的同事,最后才感覺入門了,可以動MySQL了,當(dāng)然現(xiàn)在還需要不斷地學(xué)習(xí)。
  高一致性的改造:其實在做TDSQL之前,為了避免數(shù)據(jù)丟失,業(yè)界大部分采用的方案是半同步和Galera集群技術(shù),但是我們在經(jīng)歷大量測試過程中,發(fā)現(xiàn)在數(shù)據(jù)一致性,跨IDC性能方面還是存在不少問題,而我們團(tuán)隊以前積累的高一致性切換技術(shù)又沒法直接套用,同時發(fā)現(xiàn)MySQL在金融領(lǐng)域也沒有太多的成功案例可以參考,所以是很糾結(jié)和苦惱的,但是大家都意識到NoSQL是很有局限性的,基于MySQL的高一致性改造方案是必須搞的,最終我們靜下心來,仔細(xì)研究CAP理論并結(jié)合我們多年的后臺開發(fā)經(jīng)驗,最終找到的解決方案是在MySQL開啟線程池的情況下,通過異步化改造是可以實現(xiàn)性能的提升,同時結(jié)合我們以前在高一致性的技術(shù)積累引入容災(zāi)調(diào)度,選舉,閃回等技術(shù)最終實現(xiàn)了目前的強同步架構(gòu),一方面保證了跨IDC的高性能,同時保證了單IDC故障能自動切換,并且能保證事務(wù)零丟失。
  分布式方案:MySQL采用的share nothing架構(gòu),在互聯(lián)網(wǎng)大數(shù)據(jù)量的場景下主要靠業(yè)務(wù)層來做水平和垂直拆分,犧牲了很多關(guān)系數(shù)據(jù)庫的精髓。為了讓業(yè)務(wù)層能得到解放,必須將這個工作放到數(shù)據(jù)庫層來實現(xiàn),目前解決方案都是通過引入中間件來解決這個問題,當(dāng)然TDSQL也是采用這個思路;在做TDSQL之前我們已經(jīng)有不少在NoSQL下自動Shard的方案,所以我們當(dāng)時也是直接采用這個思路,讓TDSQL的分表完全不需要業(yè)務(wù)干預(yù),集群根據(jù)表的大小,CPU/IO利用率等情況來做自動Shard,讓開發(fā)人員完全放棄事務(wù)和Join,發(fā)現(xiàn)推廣起來非常不順利,同時DBA運營起來發(fā)現(xiàn)數(shù)據(jù)分布特別靈活,在做備份恢復(fù)等操作都很不方便,總體而言這個方案過于理想化,實踐中是失敗的。既然意識到問題所在,我們立即調(diào)整思路,多聽下客戶(如Webank,部門的業(yè)務(wù)團(tuán)隊)的意見,再仔細(xì)分析分布式與數(shù)據(jù)庫傳統(tǒng)特性如事務(wù),Join等結(jié)合的難點,所以我們得出結(jié)論這塊是需要找一個平衡點的,最終提出的解決方案是放棄靈活的自動shard方案,支持將具有同樣shard key的庫表做成一個group,在數(shù)據(jù)擴(kuò)容,縮容的過程當(dāng)成一個整體來搬遷,在一個group內(nèi)盡量完整支持?jǐn)?shù)據(jù)庫的事務(wù)和Join等特性,對于這套方案,客戶都很容易理解和使用,目前推廣起來就順利多了。
  CSDN:能否結(jié)合您多年的實戰(zhàn)經(jīng)驗,談?wù)剬ySQL未來發(fā)展的前景,分享下您對未來數(shù)據(jù)庫相關(guān)領(lǐng)域的一些看法?
  雷海林:目前MySQL的使用量非常龐大,國內(nèi)外BAT,網(wǎng)易,Google,F(xiàn)acebook等大型互聯(lián)網(wǎng)公司都有基于MySQL進(jìn)行定制化改造,并且將改造的原理和代碼基本上都反饋到了社區(qū)或者以博客,技術(shù)大會等形式進(jìn)行了介紹,所以在這個領(lǐng)域大家都能提升的非??臁6鳲racle的官方MySQL,Percona,Mariadb作為主流的MySQL分支在商業(yè)利益的競爭驅(qū)動下也會竭盡全力地開發(fā)新功能和做性能優(yōu)化,適配新的硬件等等,所以我對MySQL的發(fā)展非??春?,相信每年都會有亮點出現(xiàn)。接下來重點應(yīng)該會在SQL執(zhí)行計劃的優(yōu)化,引擎層的性能優(yōu)化,在線DDL,可運營型和分布式中間件方面持續(xù)發(fā)力。
  CSDN:作為前輩,您覺得如何才能更好的掌握數(shù)據(jù)庫這門技術(shù)?
  雷海林:數(shù)據(jù)庫作為與操作系統(tǒng),編譯器并列的系統(tǒng)軟件,涉及到的理論知識,代碼實現(xiàn)和運營管理都是需要大量時間的學(xué)習(xí)才能掌握的好的,我想初期應(yīng)該是重點研究數(shù)據(jù)庫的用戶手冊和Innodb引擎的手冊,重點要先對基本功能有個清晰的了解和驗證,對各個參數(shù)和狀態(tài)字段盡量了解含義,然后再根據(jù)興趣可以找一些數(shù)據(jù)庫內(nèi)核分析的書籍和文章來學(xué)習(xí)并驗證,同時因為MySQL是個開源軟件,所以根據(jù)興趣也可以找代碼來分析了,當(dāng)然前期通過3.x版本的代碼入手可能更好一點;總而言之,數(shù)據(jù)庫技術(shù)是一門實踐性很強的技術(shù),需要能靜下心來投入大量時間來琢磨,只要努力,隨時都能讓你提高。
  CSDN:除了這些以外,您最近還會關(guān)注哪些技術(shù)?
  雷海林:我最近比較關(guān)注高性能的后臺開發(fā),分布式技術(shù)的理論和分布式消息隊列,也對go語言非常感興趣。
  CSDN:在本次SDCC 2016(深圳站)數(shù)據(jù)庫峰會上,您分享的話題是?
  雷海林:我是一個開發(fā)人員,對于常用的東西都喜歡搞懂它的原理,所以我這次的分享主要是關(guān)于各種備份技術(shù)的底層原理和優(yōu)缺點介紹,最后再介紹下TDSQL目前采用的方案和后期可能的優(yōu)化方向,也希望借此機(jī)會,跟業(yè)內(nèi)其他數(shù)據(jù)庫團(tuán)隊交流交流。
  CSDN:您最期待在SDCC 2016(深圳站)峰會上看到哪些內(nèi)容?
  雷海林:希望不要提太高大上的東西,所有話題能站在聽眾的角度分享的內(nèi)容是可以容易被復(fù)制和學(xué)習(xí)的。
?

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?