騰訊新一代企業級雲資料庫CynosDB(NewCDB)

  • 2019 年 10 月 11 日
  • 筆記

CynosDB產品簡介

CynosDB,又稱NewCDB,是由騰訊雲和TEG基礎架構部資料庫技術團隊聯合打造的面向雲計算2.0時代的新一代企業級分散式雲資料庫。在兼容開源資料庫MySQL的生態體系下,它重新定義了MySQL分散式架構,從而在單實例極致性能、事務響應延時、存儲擴展性以及可用性等關鍵技術指標上,達到商用級資料庫級別;與此同時,它是面向通用硬體進行的軟體極致優化,相比商用級資料庫,它的性價比非常高,能把雲計算共享經濟普惠給萬千騰訊雲用戶。

CynosDB名稱來源

Cynos源於拉丁語中的Cynosura,古希臘神話中北極星的名字,現意為焦點,引人注目的人或物。CDB是騰訊雲資料庫的產品簡稱,NewCDB是在CDB十年技術和產品沉澱的基礎上誕生的。騰訊雲資料庫產品在繼承中不斷完成突破。

CynosDB設計出發點

隨著雲計算2.0時代的來臨,在雲計算技術和服務的支援下,越來越多的互聯網企業業務規模快速擴大,它們對構建於雲端的核心基礎設施服務—資料庫服務提出了更高的要求,如更高的性能、更好的穩定性和更低的成本等。與此同時,越來越多的零售、IoT和醫療等傳統行業通過「接入雲」完成數字化轉型和升級,迫切需要雲資料庫服務能無縫替換傳統資料庫產品。以傳統的方式,將長期以來主導企業解決方案的資料庫Oracle 和 Microsoft SQL Server等以「lift and shift」的方式直接搬到雲上提供託管服務並不能滿足用戶在擴展性和可靠性等方面的需求,授權許可費用也使得訂閱計費的方式不能從根本上降低資料庫的使用成本。因此,通過技術手段解決這些問題正是騰訊資料庫技術團隊自研新一代雲資料庫CynosDB的出發點。

業界方案

以Google Spanner和AWS Aurora為代表的NewSQL現代關係型資料庫提供了新的思路,即既有NoSQL資料庫相同的擴展性能,又保持了傳統資料庫支援ACID和SQL的特性。其中Amazon Aurora通過對開源資料庫MySQL和PostgreSQL的計算與存儲解耦來實現資料庫在雲端的擴展和彈性調度,並將業務遷移成本和總擁有成本降到最低,得到了市場的普遍認可。

基於對當前雲計算用戶場景深度分析,CynosDB(NewCDB)參照了類AWS Aurora路線,為用戶提供新一代架構的MySQL服務。

當前主流MySQL技術分析

MySQL的主流架構來看,主要由兩種方式,一種是一主多從集中模型,他通過多個slave來構建一個多可用區部署的分散式資料庫,提供一個較好的服務可用性和數據可靠性等。另外就是分庫分表這種方式,主要來解決集中模型中的擴展問題。這兩種架構模型能滿足一些業務場景的要求,但隨著業務的發展,在很多應用場景,尤其是企業級比較苛刻的應用場景下,它天生的技術缺陷就凸顯出來了。主要表現如下:

  • 計算存儲融合:存儲擴展有限、寫性能有限、資源利用率低。
  • 日誌複製路徑過長:同步開銷大,影響到RTO,導致slave的stale read。
  • 基於中間件的分庫分表:SQL/事務無法兼容,應用需要改造。

業務推動技術發展

CynosDB(NewCDB)針對當前業務場景對資料庫技術指標的苛刻要求,進行技術架構自我突破。技術原理上的優勢主要體現在以下幾個方面:

  • 雲原生:基於騰訊雲上多年成熟組件來構建,主要包含騰訊自研MySQL內核TXSQL和自研統一存儲TXStore等。
  • 卸載:計算和存儲分離。
  • 分散式存儲:提供高可用、高可靠和強一致的彈性存儲。
  • 可計算存儲:日誌即資料庫,存儲自行完成記錄到頁的轉換。
  • 輕量級計算節點間複製:低開銷、低延時的日誌同步。

如何雲原生

CynosDB(NewCDB)的計算引擎是基於Tencent MySQL(TXSQL)來完成的。TXSQL支援主流的MySQL5.6/5.7版本,結合業務場景,在性能、企業級特性和穩定性上進行了百餘項的訂製patch,滿足公司內以及騰訊雲上各個業務在高並發性能、數據安全和穩定性上的要求。CynosDB(NewCDB)的存儲引擎是基於自研統一存儲平台Tencent Storage(TXStore)來完成的。TXStore作為存儲後端,為騰訊雲硬碟以及雲文件提供數據存儲服務。

如何卸載

CynosDB(NewCDB)計算引擎和存儲引擎解耦主要解決三個問題。第一個問題是解耦後存儲放在哪裡。CynosDB(NewCDB)藉助TXStore來為計算集群提供獨立存儲,通過存儲池化來解決存儲擴展、寫性能擴展以及資源利用率的問題。第二個問題是如何解決計算引擎和存儲引擎之間的網路傳輸效率。這裡採用了極簡IO思路,傳遞事務日誌,由存儲自行完成日誌到記錄的轉換;同時也充分發揮RDMA等硬體優勢,在數據傳輸上靈活的使用伺服器主動模式和客戶端主動模式,在元數據傳輸上結合基於消息RPC和基於記憶體RPC的優勢。最後一個問題是計算節點獨享存儲還是多個計算節點共享一份存儲。存儲本身是多副本的,所以選擇共享,於此同時能快速的進行計算節點的擴容,因為做到了數據的零拷貝。

如何實現穩定的分散式存儲

CynosDB(NewCDB)採用騰訊TEG基礎架構部自研統一存儲TXStore來承擔穩定的分散式存儲。TXStore針對雲上複雜應用環境對基礎設施苛刻的要求,它在數據的高可靠、極致性能和企業級特性上進行了大量創新設計,為騰訊雲硬碟CBS、雲文件CFS和雲資料庫CDB來提供底層存儲。TXStore在資料庫多副本多可用區分布的技術基礎上,通過基於數據多版本的秒級快照技術,結合CDP(Continuous Data Protection)連續數據保護技術,滿足數據可靠性9個9以上的要求。在性能上,通過軟硬一體化技術,實現極簡IO架構,研發適合現代硬體的高性能非同步軟體開發框架CEDA(Container Event-Driven Architecture ),充分利用NVME/Optane存儲介質和RDMA網路等硬體紅利,提供單client百萬級IOPS和亞毫秒RT(response time)延遲能力,達到甚至超過商業級存儲的水平。於此同時,利用AI深度學習技術,實現了存儲節點磁碟故障預測、IO預取和快取等能力。

如何實現可計算存儲

CynosDB(NewCDB)在存儲引擎上完成日誌轉換為記錄以及數據頁的存儲。存儲引擎收到日誌後,會進行日誌強一致的存儲,完成存儲後即可響應計算引擎,將事務提交RT降到最低。通過非同步方式完成日誌到page的落地。為了提高效率,採用了批量並行處理的技術。存儲引擎會對日誌進行排序等預處理,然後按照InnoDB page的方式,批量將事務日誌中的內容應用到page上。為了兼顧性能和成本,存儲引擎上採用了智慧多級存儲以及小顆粒度的按用分配技術。

如何實現輕量級計算節點間複製

CynosDB(NewCDB)在支援MySQL原生binlog方式複製之外,在同region支援了基於redolog的複製功能。通過設計基於redolog的新複製協議,將系統表、DDL以及DML相關同步通過redolog在多個計算節點間完成複製。在Slave上,也採用了無磁碟IO的apply方式,大大加快同步效率。

從CDB到NewCDB,騰訊雲資料庫經歷了從雲資料庫服務構建和重新定義,形成了覆蓋全業務場景的OLTP資料庫產品。

在接下來的道路中,騰訊資料庫技術團隊將繼續深挖雲上用戶痛點,構建企業級特性,進一步完善雲資料庫自治能力,完成從NewCDB到SmartCDB的蛻變,將更多騰訊內部的資料庫技術普惠給騰訊雲用戶。

騰訊資料庫技術團隊對內支援微信紅包,彩票、數據銀行等集團內部業務,對外為騰訊雲提供各種資料庫產品,如CDB、CTSDB、CKV、CMongo, 騰訊資料庫技術團隊專註於增強資料庫內核功能,提升資料庫性能,保證系統穩定性並解決用戶在生產過程中遇到的問題,並對生產環境中遇到的問題及知識進行分享。

騰訊技術工程官號

騰訊前沿技術 | 產品 | 行業資訊交流發布平台