新一代雲原生資料庫關鍵技術解析與最佳實踐

網路通訊頻道發表於2022-12-31

在雲端計算時代,由於對彈性、高可用性、可擴充套件性的需求以及來自不同業務領域的應用程式對按需使用的需求增長,雲原生資料庫變得越來越重要。雲應用程式的這些需求為雲原生資料庫提供了新的機會,而傳統的企業內部資料庫系統無法完全滿足這些需求。

騰訊雲原生資料庫經過多年的研發和打磨,所實現的計算、記憶體與儲存資源的解耦的“日誌即資料庫”架構、HTAP、Serverless等特性,已是全球首創或業內領先的技術,同時其效能對比傳統雲資料庫達到數倍的大幅度提升。

▲騰訊雲資料庫產品總監 劉迪

【嘉賓介紹】騰訊雲資料庫產品總監,中國計算機行業協會開源資料庫專業委員會副會長、北京航空航天大學特聘講師。深耕雲資料庫產品策劃多年和多年遊戲、金融、電商等行業的資料庫架構設計經驗。帶領團隊完成了騰訊雲資料庫MySQL的企業化轉型,雲原生資料庫TDSQL-C的孵化和新一代架構升級以及AI與資料庫自治等核心專案, 實現了雲原生資料庫效能、市場覆蓋率、規模、營收等多維度快速增長和突破。

本文內容將圍繞著騰訊雲原生資料庫在架構演進、軟硬結合探索、自研核心最佳化等方面的核心技術解析展開。結合海量資料儲存、高頻交易場景、流量洪峰/不可預估場景、開發測試等週期性峰值業務場景的行業案例,深入解析新一代雲原生資料庫TDSQL-C的產品特性、技術亮點以及未來的發展趨勢。

分享大綱:

1、資料庫行業演進概述

2、雲原生資料庫關鍵技術解讀

3、雲原生資料庫典型場景案例

4、未來已來:Serverless

資料庫行業演進概述

簡單回顧一下整個資料庫的發展與變革,相信絕大多數DBA都經歷過這樣的時代。起初是傳統IT時代,當時企業廣泛使用商業資料庫,包括Oracle、IBM的DB2,以及SQL Server。隨著網際網路的發展,這類資料庫的弊端逐漸凸顯,過於依賴硬體,價格昂貴等問題層出不窮。

隨著網際網路時代的萌芽,許多開源資料庫紛紛嶄露頭角,包括MySQL、Redis和MongoDB等,基於典型的LAMP框架去做應用。後面兩個時代十分相近,都是基於雲端計算,對技術、業務提出新的挑戰和機遇。各個雲廠商陸續推出雲上的資料庫,包括雲資料庫RDS、雲託管NoSQL等一系列雲資料庫。在業務需求和技術發展的共同推動下,雲原生資料庫也出現在了大眾的視野中了。

反過來看雲資料庫時代提到的資料庫產品,都有一個共同的特徵,那就是透過搬遷模式來實現資料庫雲託管。這並沒有打破傳統資料庫固有的軟體設計、架構特性和部署模式,而是雲廠商的規模效應,或者使用更好的裝置、方式來承載開源資料庫的軟體架構。

值得一提的是,雲原生資料庫打破傳統資料庫在軟體設計上效率不極致的問題,利用軟體設計工程學的方法,包括新軟硬體的結合,AI賦能,三位一體,解決傳統雲資料庫的“七宗罪”包括:效能天花板低、資料回檔慢、維護成本高、故障恢復慢、資源利用率低、複製延遲高、擴充套件性弱。

如何告別搬遷模式,實現真正的雲原生資料庫?需要解決以下三個方面:客戶使用資源的業務效率,資源被雲廠商管理提升的系統效率,以及雲廠商為客戶提供服務的運營效率。業務效率,是如何給客戶提供高效能、高穩定的產品。在資源被雲廠商管理的情況下,如何對資源物盡其用,提高資源的利用率。運營效率,保證資料庫既能夠在高效能的場景下運轉,又能夠保證業務的連續性、資料庫的穩定性。

雲原生資料庫關鍵技術解讀

TDSQL-C MySQL是騰訊雲自研的新一代雲原生關係型資料庫。融合了傳統資料庫、雲端計算與新硬體技術的優勢,採用“儲存和計算分離的架構”,100%相容MySQL協議,為使用者提供極致彈性、高效能、高可用、高可靠、安全的資料庫服務,主要包括幾個特性:

開放相容。100%相容開源MySQL。無需改動程式碼,即可完成資料庫查詢、應用和平滑遷移。

超高效能。單節點百萬QPS的超高效能,可以滿足高併發、高效能的場景。

海量儲存。支援PB級的海量儲存,為客戶免去頻繁分庫分表的繁瑣操作,同時支援資料壓縮。

高可用/高可靠。故障秒級恢復,並且維護資料和備份的多副本,保障資料安全可靠可達99.9999999%。

彈性擴充套件。根據業務需要快速升降配,秒級完成擴縮容和橫向彈性擴充套件。

超低成本。支援Serverless架構,自動擴縮,僅按照實際使用量計費,不用不計費,成本降低超60%。

上圖是大家非常熟悉的MySQL主從架構,不論是資料寫盤過程,還是Master到Slave的同步, 均有大量的資料流和日誌產生。

提升資源的擴充套件性、靈活性,解耦算存資源,而犧牲效能,本地IO全部變成網路IO,這對使用者來說,是用效能換取靈活性, 是不可取的。騰訊在設計雲原生架構時,最先考慮的就是不能犧牲效能,保證高效能的前提下,實現真正的靈活性和效能,得到一個計算與儲存分離的雲原生資料庫架構。

儲存上最重要的最佳化是把資料流進行重構,如何能夠縮小網路傳輸的資料量,提高網路IO的吞吐,改變原先的IO模式,使得對效能的影響減輕到最低?對此,騰訊雲選擇增量的物理日誌來實現,TDSQL-C拋棄邏輯日誌和資料頁面的原始資料流,透過物理日誌在儲存層進行並行回放資料頁面和邏輯日誌。

透過這種模式,騰訊雲完成了雲原生資料庫的軟體設計,最終可以看到不管是在全Cache, 還是大資料庫的測試場景中,TDSQL-C的效能相比傳統的雲資料庫有200%的提升。

雲原生資料庫TDSQL-C採用騰訊雲資料庫團隊自研的TXSQL核心,100%相容原生MySQL版本,針對企業級的重要場景,研發出眾多核心特性。大幅提升了效能和穩定性, 並將多項特性最佳化提交給開源社群並獲得認可。在8.0版本實現平行計算、事物非同步提交、寫下推、熱點系統最佳化等功能。

核心TXSQL孵化出很多企業級的產品能力,比如SQL審計、SQL限流與防火牆、Instant DDL、共享記憶體、空閒事務管理,以及Flashback Query,可以查詢多版本、多時間的資料集,快速讓使用者進行資料恢復。

隨著產業發展,表單資料量、複雜查詢數量、OLTP/OLAP混合場景出現頻次呈飛速上升趨勢,傳統MySQL只支援單執行緒查詢處理模式,且由於計算與儲存的緊密耦合,無法有效解決這類問題,這導致了多種弊端產生。

TDSQL-C並行查詢能力,打破傳統MySQL單SQL無法利用多核CPU的瓶頸,實現了並行查詢框架,將資料分到不同的執行緒上,多個執行緒平行計算,將結果流水線彙總到匯流排程,複雜查詢效率大幅提升。

前面解決的是複雜查詢的問題,Instant DDL解決的是海量資料做庫表結構變更、庫表型別變更的問題。大表的DDL是比較典型的IO bound場景,執行期間會對業務產生較大的影響。為此TDSQL-C針對特定使用者場景支援了instant DDL操作,實現秒級DDL的效果。TDSQL-C在系統表中增加相關後設資料表用來儲存後設資料的版本變更,在資料行中標識後設資料版本資訊,對任何行的解析都可以跟蹤到後設資料的版本,進而對行進行正確的操作。目前已支援add columnC和modify column兩種操作,整個DDL的代價由O(n)降到了O(1)。舉個淺顯的例子,對一張5kw的表(12GB)左右,分別進行秒加列和秒改列的操作,正常情況下加列需要2分鐘、改列需要21分鐘左右;而使用秒加列和秒改列,瞬間就能完成。

雲原生資料庫TDSQL-C對網路架構進行了全面升級,採用全鏈路RDMA網路,進一步最佳化了儲存層與計算層以及儲存層多副本間關鍵路徑的系統效能,降低請求延遲最高達80%,使I/O效能不再成為瓶頸。

眾所周知,TCP協議的延遲基本都集中在協議棧,用RDMA替換之後,裸協議的延遲大概可以從250us降低到30us,整體效能達到200%以上的提升。

雲原生資料庫TDSQL-C首次嘗試用編譯器最佳化,利用英特爾oneAPI DPC++/C++編譯器,結合連結時最佳化(LTO)和配置檔案引導最佳化(PGO)的方法對應用程式進行模組間最佳化(IPO),允許對程式碼實現深入分析和進一步的最佳化,來達到更好的效能。配置檔案引導最佳化則向編譯器提供程式中最常被執行區域的資訊。這些技術相結合,共同使騰訊雲原生資料庫TDSQL-C 效能得到顯著提升,最高可達85%。

利用AI技術,騰訊雲原生資料庫TDSQL-C提供自調優、自診斷、自最佳化等特性,實現索引自動最佳化、異常檢測、根因分析、SQL限流等,能夠保證資料庫在執行階段、維護階段都有非常穩定的產品表現。

雲原生資料庫典型場景案例

在騰訊的集團內部,包括騰訊自身的明星級業務,微信、騰訊影片、騰訊會議、財付通、微信支付等都已經開始做雲原生的架構升級。在集團外部,不管是金融行業、政企行業,還是泛網際網路行業、泛企業領域、新零售、智慧出行,也都紛紛開始使用雲原生資料庫。

新零售領域的代表企業瑞幸咖啡,沒有經歷雲資料庫階段,直接完成從自建的MySQL遷移到雲原生資料庫的跨級跳躍,幫助使用者解決原來的老架構無法快速擴容,線上大促活動時經常出現使用卡頓、無法提交訂單、無法支付的難題。

對瑞幸來說,整個遷移過程是平滑且快速的,100%相容MySQL,自建一步到位,雲原生架構沒有改動任何業務程式碼。遷移之後,在做活動期間擴縮容速度從原來的天級別,變成秒級別,保證既滿足峰值對資料庫效能的要求,也保證在活動結束以後能夠快速釋放閒置資源,降低IT運營的成本。

移動網際網路領域的BLUED,完成了核心系統開源分散式資料庫替換。替換之後,TDSQL-C典型場景延時降低到20ms以下,基於TDSQL-C超高效能同樣業務場景下成本降低60%。TDSQL-C用最小的資源承載能夠保證業務提升五倍的效能,同時能夠保證不做煩瑣的分庫分表。

未來已來:Serverless

截至目前,雲資料庫共經歷了三個時代。1.0時代,開源託管資料庫產品RDS,以租戶方式提供給使用者。2.0時代,雲原生資料庫時代,存算分離結耦提供了更極致的效能。3.0時代,Serverless資料庫應用階段,自動彈效能力、更加智慧化的運維,極致化的成本優勢提供了更為廣闊的想象空間。資料庫的發展由對效能、穩定性、安全的要求,逐步發展為對極致成本的要求。大家認為Serverless是下一個雲原生的風口,Serverless資料庫是在高效能雲資料庫之上的極致成本最佳化方案。

早在2020年底,騰訊雲就推出雲原生資料庫TDSQL-C Serverless,能夠實現秒級極致彈性伸縮,高度智慧化,遮蔽底層繁瑣操作和運維,使用成本降低80%以上等功能。

Serverless資料庫可根據使用者負載需求無感擴充套件,不到1秒即可從數百個事務擴充套件到百萬級事務,將有望實現更加精準預測增長。機器學習演算法是實現Serverless資料庫智慧化的關鍵演算法,可以對大量資料進行學習分析,構建應用領域模型,使資料庫更加智慧化。

隨Serverless技術的不斷髮展,資料庫的易用性得到進一步提升,未來將支援更多的擴容和自動彈性擴充手段,其本質上是讓使用者更貼近應用,而無需關注後端服務。

Serverless資料庫根據精細的增量調整容量變化,相比按照峰值負載預置容量具備了更加完善的機制,真正做到“無使用不計費”, 幫助使用者更省成本。

此外,雲原生資料庫Serverless輻射海量開發者生態。騰訊雲原生資料庫TDSQL-C Serverless實現與微信生態互通,聯合微信小程式雲開發,創造開發者使用資料庫新形態。已為接近50萬小程式開發者提供了一站式開發雲服務。

同時,TDSQL-C Serverless也聯合Coding DevOps,無伺服器函式SCF、輕量級伺服器、物聯網平臺等為企業和開發者提供一鍵部署多端執行的全套解決方案。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545813/viewspace-2930395/,如需轉載,請註明出處,否則將追究法律責任。

相關文章