歡迎光臨
每天分享高質量文章

劉奇:NewSQL時代看TiDB的前世今生

導讀:12 月 22~23 日,高可用架構和 msup 聯合主辦的 GIAC 全球網際網路架構大會將於上海舉行。GIAC 全球網際網路架構大會是面向架構師、技術負責人及高階技術從業人員的技術架構大會。GIAC 於 2016 年 12 月成功舉辦了第一屆,今年的 GIAC 已經有騰訊、阿裡巴巴、百度、平安、餓了麼、攜程、七牛、螞蟻金服、羅輯思維、摩拜、唯品會,LinkedIn, Pivotal, Mesosphere, AdMaster, Hulu 等公司專家出席。


在大會前夕,高可用架構採訪了本屆大會講師劉奇,就目前業界非常熱的 TiDB 及新時代的資料庫發展進行了探討。


劉奇,PingCAP 聯合創始人兼 CEO ,愛自由的 Hacker,先後建立了 TiDB、Codis 等知名開源專案。曾任豌豆莢,京東資深系統架構師。同時也是知名的 Go 語言專家和 Redis 專家。現從事開源的分散式 NewSQL 資料庫 TiDB(受Google F1啟發)的開發。擅長高併發、大規模、分散式資料庫系統架構設計。


高可用架構:奇叔好,很榮幸能有機會來採訪您。首先,TiDB目前非常熱,能簡單談談您當時做 TiDB 的初衷?以及期望解決哪些場景的問題?


劉奇:你好!我也很高興能接受這次採訪,其實說到這個專案的初衷,是當初在豌豆莢的時候,當時我和東旭(PingCAP 聯合創始人)一起負責後端的分散式儲存部分,在那段時間,我們完成了一個分散式的快取系統,也就是開源出來的 Codis,在 Codis 解決了快取的彈性伸縮問題後,我們嘗試開始去解決 MySQL 的擴充套件性問題。


當時原來的系統大量依賴了 MySQL 分庫分表的技術,運維和使用起來非常的痛苦,我們就覺得這個方案太不優雅了,於是就希望能夠徹底的解決這個問題,當時看到了 Google Spanner 和 Google F1 的論文後,覺得這個才是正確的技術方向,而且社群裡面也沒有一個開源實現,我們決定填補這個空白,這個是整個專案的初衷。


到現在差不多 3 年過去了,TiDB 也在兩個月前釋出了 1.0,我們很驚喜的看到我們的使用者已經把 TiDB 的使用場景不僅僅從簡單的替換 MySQL 分庫分表,而是把應用場景擴充套件到了強一致的資料倉庫,開始模糊傳統資料庫和資料倉庫的邊界,漸漸把 TiDB 變成了一個 HTAP (混合事務/分析處理)資料庫,在處理高併發實時事務寫入的同時,解決了很多的實時分析的場景,比如 今日頭條,Mobike, 去哪兒,同程旅遊等大型網際網路公司內部都有很多類似的應用。

高可用架構:TiDB1.0 釋出後,能否透漏下你們後續研發的重點和最佳化方向有哪些?


劉奇:其實 1.0 只是一個裡程碑,之前其實已經有很多早期使用者在生產環境使用 TiDB,1.0 是我們覺得是時候有信心讓我們的使用者大規模在生產環境使用的一個標誌。研發的重點和方向是長期和明確,幾個重要的方向:


  1. 持續增強 TiDB 的 SQL 能力,持續提升實時分析和查詢能力;

  2. 儲存引擎如何和新的硬體和儲存介質結合,發揮新時代硬體最大的能力;

  3. 和雲的整合,和 K8S 整合,做到真正意義上的 Cloud-Native 和 Self-driving 資料庫


高可用架構:業界目前分散式資料的產品很多,能談談 TiDB 在這塊技術優勢?以及 TiDB 目前的一些成功案例。


劉奇:首先,TiDB 本身的 Share-nothing 的架構決定了它的可用性和擴充套件性是非常好的,真正能做到彈性伸縮;


第二,對使用者的訪問介面是相容 MySQL 的協議和語法,使得使用者的使用和遷移成本很低,MySQL 擁有一個良好的開發者生態,大多數 MySQL 的工具在 TiDB 上都可以無縫的使用;


第三,TiDB 的底層的分散式儲存並不依賴現有的 HDFS 或者其他的分散式檔案系統,我們針對分散式資料庫的場景自己設計了底層的分散式儲存系統 TiKV,從效能,可用性和可維護性上來說都是一個更好的選項;


第四,TiDB 支援強一致的對使用者透明的分散式事務,這個特性極大的減小了開發者在開發應用時的難度,降低了心智負擔;


另外,TiSpark 這個專案能讓使用者在一份儲存上(TiDB Cluster),同時使用 SparkSQL 進行複雜的 OLAP 實時分析,極大減低了使用者 ETL 的工作量。


其實目前已經有很多的知名的網際網路及金融企業在大範圍的使用 TiDB,比如網際網路裡面摩拜單車的使用的規模是比較大的,還有餓了麼,去哪兒網,同程旅遊,今日頭條都有大規模的應用。在金融行業裡面,例如 360 金融,美利金融,團貸網等網際網路金融,在實時風控方面 TiDB 都有不錯的應用,目前還有一些更大型的傳統金融客戶目前正在穩步推進,請大家期待好訊息。


高可用架構:縱觀資料庫的發展歷程,從傳統sql到nosql到newsql,您此前也是著名nosql專案Codis的專案發起人,現在是newsql的引領者,您怎麼看大資料時代資料庫的發展趨勢?


劉奇:確實,我還是認為 NoSQL 是資料庫發展的一個中間的過渡和互補,歷史是螺旋上升的,SQL 作為歷史最悠久,受眾最廣泛的資料操作介面,不管是在過去還是未來,都會擁有重要的位置,最近幾年資料庫發展的幾個大的趨勢:


  1. 分散式和 Scale-out 是必選項;

  2. SQL 在回歸;

  3. ACID 事務支援;

  4. Cloud-Native;

  5. 分析和事務處理系統在融合, HTAP 會成為新一代資料庫的標誌


當然了,NoSQL 並不是 NO SQL 的意思,而是 Not Only SQL,最典型的例子,比如快取,用 Redis 就很好嘛。在合適的場景使用合適的方案,沒有什麼是銀彈。

高可用架構:聽說你們公司目前有 60 多人,也看到 TiDB 的 contributor 有數百人的參與,這麼多人,能談談您讓專案高效運轉的一些經驗?


劉奇:哈哈,糾正一下,現在公司已經 87 人了,我們的思路其實也比較簡單:


  1. 嚴格按照標準的頂級 Open source 專案的運營流程走,我們有嚴格的分支管理和程式碼審核,另外重度依賴 Github 來完成協作,這些經驗都在更大型的開源專案中驗證過,比如 K8S、Docker 等我相信這套開源的方法論是經得起推敲的;

  2. 非常重視測試和自動化,從 Day 1 開始,我們就在構建我們的分散式自動化測試框架,以及收集 MySQL 的整合測試用例(這也是我們選擇 MySQL 協議相容的一個很重要的原因),到現在為止這上千萬的測試用例在每次提交程式碼和構建時候都會自動的執行,這給工程師在加新功能或者重構的時候增加了信心,這也是大型專案能往前推進的核心保證,怎麼強調都不為過。 


高可用架構:看來我們的資訊有點落後了,你們發展好快。據瞭解很多 contributor 直接最後成了你們的員工,在 contributor 和員工之間,你們最後的把控和取捨是怎樣的?


劉奇:確實,很多優秀的社群貢獻者後來加入了 PingCAP,特別是高校的優秀大學生,社群本身是我們很好的面試官,如果這個貢獻者能長期持續的貢獻,說明他已經能和我們的團隊很好的協作,很多時候這個過程是很自然的,對於優秀的人才我們肯定是求賢若渴,不管是社群的還是正常的內推或者社會招聘。


對於 Contributor 我們的思路是盡可能扶持新的貢獻者,透過各種教程和簡單的任務,讓感興趣的開發者能夠入門,能夠瞭解 TiDB 的內部原理,不管最後成為了員工還是其他什麼結果,我相信對他個人和對 TiDB 這個專案都是好事,也非常感謝這些 contributor 給社群持續做貢獻,讓更多的 TiDB 使用者受益。


高可用架構:最後,能稍微透露下您此次大會的分享內容以及您對 GIAC 大會有哪些期望?


我們公司也是 GIAC 的老朋友了,今年我分享的內容是 TiDB 在多租戶技術上的一些想法和嘗試,多租戶也是雲資料庫的核心技術之一,乾貨很多,挑戰也很大。對 GIAC 的期望就是,越辦越好啦。


本期 GIAC 大會上,資料庫部分精彩的議題如下:

註:出品人及演講議題以最新官網 http://2017.thegiac.com 為準。

參加 GIAC,盤點年底最新技術,高可用架構會員專享 2 天票直減 1700 元,速戳閱讀原文”或識別二維碼申請。

贊(0)

分享創造快樂