歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~
CynosDB是騰訊雲自研的新一代高效能高可用的企業級分散式雲資料庫。融合了傳統資料庫、雲端計算與新硬體的優勢,100%相容開源資料庫,百萬級QPS的高吞吐,不限儲存,價格僅為商用資料庫的1/10。
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技術分析:
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?fromSource=waitui**)。**
此文已由作者授權騰訊雲+社群釋出,原文連結:https://cloud.tencent.com/developer/article/1134350?fromSource=waitui
歡迎大家前往騰訊雲+社群或關注雲加社群微信公眾號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~