從單體式向分佈式演進 金山雲打造更高性能的數據庫DragonBase

(原標題:從單體式向分佈式演進 金山雲打造更性能數據庫DragonBase)

在信息快速發展多元化的今天,數據庫作爲現代信息技術領域的三大核心基礎之一,重要性愈發明顯。隨着傳統商業數據庫產品熱度逐漸下降,更多的企業級用戶逐漸轉向雲分佈式數據庫及開源數據庫產品,雲化部署模式正在逐漸超越傳統部署模式併成爲市場的發展趨勢。12月18日,在全球分佈式雲大會分佈式數據論壇上,金山雲數據庫總監餘邵在分享了《金山雲分佈式數據庫DragonBase的實踐與發展》。

從單體式向分佈式演進 金山雲佈局全係數據庫產品

“從單體式向分佈式轉變,整個數據庫架構發展大致分爲三種形態,金山雲佈局了全系的數據庫產品”餘邵在表示。

第一種是單體式數據庫,以主、備架構爲主,如MySQL、PostgreSQL,優勢是成熟度和穩定性較高,其劣勢在於性能和容量受限單機,在業務發展較快速的情況下,難以滿足業務發展的需求。

第二種是共享式數據庫,類似於PolarDB、Aurora,優點是兼容性高、分鐘級擴展,缺點也顯而易見,比如對硬件要求較高、成本高,由於單點寫入,性能只能到十萬級,當分佈式存儲出現故障影響面較大,比較適用於公有云的客戶需求。

第三種是分佈式數據庫,目前比較主流的數據庫,主要包含分佈式SQL引擎和分佈式存儲。其中,分佈式SQL引擎在設計上各個廠商實現的功能基本類似。分佈式存儲主要包括基於B+ Tree的關係型存儲和基於LSM Tree的KV存儲。對比前兩種架構,分佈式數據庫在計算能力或存儲能力可以很好地實現水平擴展,不足之處在於兼容部分SQL語法和功能方面,不過仍然存在很大的提升空間。

“金山雲在這三種架構類型的數據庫上都做了佈局,包括單體式的RDS、共享式的KingDB以及分佈式的DragonBase。”餘邵在表示。

金山雲佈局全係數據庫產品,在資源層面,金山雲公有云上提供了輕量級LXC和KVM,基於K8S的容器化正在研發中;存儲可以提供本地磁盤、雲磁盤、對象存儲等;在引擎類層面,分爲關係型產品MySQL、PgSQL、KingDB等,NoSQL包括Redis、MongoDB、InfluxDB等數據庫產品;在服務層面,提供數據傳輸DTS、分佈式事務DTX、安全審計DBAudit、數據管理DMS以及數據備份DBS等服務。

“客戶想用你的數據庫產品,數據遷移不可避免,DTS就是解決數據遷移的服務類產品。有些傳統行業使用Oracle等商業數據庫的,我們也需要提供異構數據遷移的能力。一些傳統行業做集中式核心系統,往分佈式架構去轉型,會涉及到服務的拆分,對於跨服務的分佈式事務,就需要用到像DTX這樣的分佈式事務的中間件服務。”餘邵在表示,此外審計、管理、備份等重要的增值服務,我們也提供了不同的產品解決方案。

其實早在2016年金山雲就已經發布了DragonBase單體版本,2017-2018年深度優化單體版本穩定性和性能,2019年發佈DragonBase分佈式1.0版本,2020年發佈升級版本2.0支持分佈式事務、分佈式計算、高可用、彈性擴展、安全審計、數據強一致、災備恢復、雲管平臺和數據遷移等諸多核心能力,正在研發的DragonBase3.0版本將在Oracle兼容、分佈式計算引擎和自動化運維等方面進行迭代。目前,DragonBase已在金融、互聯網、政企等多領域實踐應用,提供穩定、高性能、安全可靠的數據庫服務。

餘邵在講到,DragonBase總體架構主要由數據庫雲平臺和內核組成。其中,雲平臺可以提供數據庫的資源調度、故障切換、監控運維、數據校驗等能力,並採用容器來部署數據庫內核,實現多租戶、資源隔離和彈性擴展等功能;數據庫內核支持單體式和分佈式兩種部署形態,採用Share-Nothing架構,能夠實現性能和容量的水平擴展,支持Hash、Range、List等分片方式。目前,DragonBase除了能支持X86平臺,像主流的ARM平臺等也能實現很好地支持。

六大特性 DragonBase不斷提升的核心能力

“強一致、高可用、易擴展、高可靠、高性能、安全性,六大特性成爲金山雲DragonBase數據庫正在打造和一直不斷提升的核心能力。”餘邵在表示。

一致性方面,DragonBase的分佈式事務,通過優化讀寫強一致,性能可以提升30%以上。一是事務處理優化,引入一階段本地事務+異步管理,能夠提高事務吞吐;二是全局中心時鐘優化,實現分佈式事務的分佈式一致性讀,通過使用Batch和Pipeline技術實現更小的SQL時延損耗,實現RC隔離級別

可用性方面,提供主動+被動探活,協議層和應用層探活,支持熔斷機制,不可用節點個數超過設定閾值會停止切換,通過人工介入進行確認,避免高可用服務自身的異常導致大規模切換,影響服務可用性,同時支持“兩地三中心”和“三地五中心”的跨地域高可用部署,提供實例級、機房級、地域級的服務高可用保障,可以確保RTO<30秒。

在易擴展方面,DragonBase能夠支持計算節點和存儲節點的橫向(scale-out)和縱向(scale-up)的擴展能力。Scale-out計算節點具有實現集羣的吞吐和性能的水平擴展的能力,Scale-out存儲節點支持基於分庫分表、按子表自動遷移,並支持按容量按訪問熱度進行遷移。Scale-up可以實現節點的升配和讀寫分離能力,能夠支持多種讀寫分離和負載均衡策略,來滿足不同業務的需求。

在高可靠性方面,考慮到不同業務對數據一致性的要求不同,DragonBase支持異步、半同步、強同步三種數據同步模式,業務可按需調配。DragonBase的DTS可以支持數據遷移和跨地域數據同步,能夠做到表級別同步,甚至是行級別的,延遲能夠在秒級甚至毫秒級。除了在線數據的可靠性以外,DragonBase還做了離線數據可靠性驗證。

在高性能方面,DragonBase通過深度優化數據庫內核引擎,包括線程池、異步事務提交和異步死鎖檢測等多種優化技術。“在高併發的情況下,DragonBase單節點性能比社區版本高40%以上,同時可以實現水平擴展”餘邵在表示。

不僅如此,在實際運維的過程中,DragonBase的智能管控平臺提供多維度的監控服務,監控大屏能夠針對資源和實例粒度,展示整體的使用情況。同時,DragonBase具有完備的管理功能,支持實例創建升級、備份恢復、彈性擴展、數據遷移等,並提供OPENAPI等接口,供應用端進行創建、刪除、升級實例等基本操作

互金行業的災備方案中,DragonBase支持兩地三中心,能夠實現同城雙活、異地災備和單元化,保證每個AZ裡面的應用和數據都是完整的。“在數據層面,我們通過多副本的同步機制,保證數據是一致的。從而保證同地域的RPO趨於0。跨地域則使用DTS異步複製,通過並行複製和靈活任務調度等優化手段,使得RPO可以達到秒級。”餘邵在說到,在AI場景,面對海量標註信息存儲,DragonBase能夠提供上百個存儲節點,提供百TB級存儲能力,支撐每秒100w行寫入,並執行定期穩步刪除策略。

從單體式到共享架構再到主流的分佈式數據庫,金山雲正在不斷完善並一步步打造更高階性能的數據庫產品,爲更多的企業提供更優異的數據計算和存儲服務。