攻克數據庫核心技術壁壘,實現百萬級QPS的高吞吐

CynosDB是騰訊雲自研的新一代高性能高可用的企業級分佈式雲數據庫。融合了傳統數據庫、雲計算與新硬件的優點,100%兼容開源數據庫,百萬級QPS的高吞吐,不限存儲,價格僅爲商用數據庫的1/10。html

CynosDB設計出發點:數據庫

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

CynosDB for MySQL 產品簡介:緩存

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

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

業界方案:網絡

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

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

當前主流MySQL技術分析:app

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

¡計算存儲融合:存儲擴展有限、寫性能有限、資源利用率低。

¡日誌複製路徑過長:同步開銷大,影響到RTO,致使slave的stale read。

¡基於中間件的分庫分表:SQL/事務沒法兼容,應用須要改造。

業務推進技術發展:

CynosDB for MySQL針對當前業務場景對數據庫技術指標的苛刻要求,進行技術架構自我突破。技術原理上的優點主要體如今如下幾個方面:

  • 雲原生:基於騰訊雲上多年成熟組件來構建,主要包含騰訊自研MySQL內核TXSQL和自研統一存儲TXStore等。

  • 卸載:計算和存儲分離。

  • 分佈式存儲:提供高可用、高可靠和強一致的彈性存儲。

  • 可計算存儲:日誌即數據庫,存儲自行完成記錄到頁的轉換。

  • 輕量級計算節點間複製:低開銷、低延時的日誌同步。

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

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

如何實現穩定的分佈式存儲。CynosDB for MySQL採用騰訊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 for MySQL在存儲引擎上完成日誌轉換爲記錄以及數據頁的存儲。存儲引擎收到日誌後,會進行日誌強一致的存儲,完成存儲後便可響應計算引擎,將事務提交RT降到最低。經過異步方式完成日誌到page的落地。爲了提升效率,採用了批量並行處理的技術。存儲引擎會對日誌進行排序等預處理,而後按照InnoDB page的方式,批量將事務日誌中的內容應用到page上。爲了兼顧性能和成本,存儲引擎上採用了智能多級存儲以及小顆粒度的按用分配技術。

如何實現輕量級計算節點間複製。CynosDB for MySQL在支持MySQL原生binlog方式複製以外,在同region支持了基於redolog的複製功能。經過設計基於redolog的新複製協議,將系統表、DDL以及DML相關同步經過redolog在多個計算節點間完成複製。在Slave上,也採用了無磁盤IO的apply方式,大大加快同步效率。

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

在接下來的道路中,騰訊雲數據庫產品將繼續深挖雲上用戶痛點,構建企業級特性,進一步完善雲數據庫自治能力,完成從NewCDB到SmartCDB的蛻變,將更多的雲計算普惠帶給世界。

CynosDB近期會開放公測申請,採用邀測制,進一步的消息,敬請關注騰訊雲官網(https://cloud.tencent.com/act/event/cynosdb.html)。

相關文章
相關標籤/搜索