騰訊云程彬:騰訊云數據庫CDB的設計原理
紐約時間4月12日,著名開源數據庫組織MariaDB在美國紐約曼哈頓召開了***屆M|17 會議,騰訊云數據庫專家程彬分享騰訊云的數據庫CDB設計原理,講述了諸多不為人知的內容,包括設計思想以及技術細節,在騰訊云的數據庫設計中,性能優化和Logbus部分為核心特點。
該會議為著名MySQL的分支MariaDB的***次用戶大會,旨在讓更多用戶、開發者和公司學習交流數據庫技術,互通有無。
首先騰訊云數據庫產品,基于大規模用戶的使用,經過QQ、微信、騰訊游戲等***用戶量的產品驗證,積累了豐富的經驗,在過去的2016年,用戶數量倍增。
據程彬透露,在創立騰訊云數據庫之初,各業務均希望數據庫能提供更低的成本,同時提供更優的RTO和RPO,并能7*24小時的服務,免去繁瑣的運維,讓使用者能從繁重的數據庫運維中解脫出來。因此,一開始的設計過程就對存儲、運維、性能、可用性、擴展性、安全性以及成本等做了全局考慮。
客戶們使用了云數據庫后,對他們的運維和DBA團隊,帶來的工作方式的改變。可以節約更多時間來思考和業務結合更加緊密的工作。例如,他們把原來用于維護數據庫的時間來做數據分析,深刻的理解業務數據,挖掘更多的商業價值。
CDB采用可配置的一主多Slave模式,可以設置這些Slave節點位于不同的可用區,在不同的配置條件下可以去滿足不同行業的可用性要求。同時,也可根據可用區延遲靈活的配置同步方式,從而保證性能優先或數據一致性優先。為了提高性能,騰訊云數據庫對SQL線程和IO現成的鎖沖突,隨機IO消耗以及Relaylog的緩存,均做了優化,并提出了自己的同步組件稱之為LogBus,加速主備切換時間和故障發現時間。
因為云數據庫的服務,和以往自建服務不同,為了完成回檔、多份數據的持久性和數據的安全性,跨地域容災等實例之間的數據同步,是一個用得非常多的特性。這個會關系到整個集群的可用性,因此,這里的logbus 接管了主備同步的數據,在中間優化傳輸速度,保證傳輸的可靠性,對整個集群帶來了本質的改變。
演講中,程彬詳細介紹了性能優化的諸多手段,例如線程池、查詢計劃緩存,MVCC優化,redo log鎖優化,以及jemalloc優化等,騰訊云數據庫一直以性能著稱,除了采用***,***秀的硬件設備外,內核優化也是殺手锏。并且程彬還承諾,這些優化會很快開源出來,共享到全球企業。
在數據持久性方面,騰訊云數據庫采用彈性備份策略,可以針對數據進行邏輯備份,單表備份,以及物理備份,然后根據備份的數據,可以提供回檔功能。
在分布式方面,程彬透露了一個新組件的內部開發即將完成。正在緊張測試階段,該分布式服務可以把現有的數據庫分片到主從版數據庫,支持分布式事務,支持完整的DDL DML 等語句,擴容方便,支持PB級的分布式存儲。
同時程彬也提到和騰訊云數據庫在社區方面的一些后續動作,將在2017年投入人力,整理部分云數據庫的優秀功能,回饋社區,并廣泛的和國內外開源界進行溝通交流,引進優秀方案,輸出研究成果,多參與社區活動,一起把將開源數據庫提升到企業級品質。
***程彬還透露了部分后續數據庫的規劃,其中性能診斷、DBA工具集是大家翹首以盼的運維利器,期望早日與用戶見面。