隨著分布式數(shù)據(jù)庫逐步成熟,越來越多的企業(yè)開始考慮使用這一新興架構產品。國內也誕生出一批本土的分布式數(shù)據(jù)庫廠商。在眾多分布式數(shù)據(jù)庫產品有,有一家其技術架構、產品定位和功能亮點頗為引人矚目,這就是來自深圳的澤拓科技及其研發(fā)的分布式數(shù)據(jù)庫產品-KlustronBase(下文簡稱昆侖數(shù)據(jù)庫)。下文是近期針對這一數(shù)據(jù)庫產品,做的一些探索。
1. 初識昆侖數(shù)據(jù)庫
1)產品概述
剛開始接觸這一數(shù)據(jù)庫產品,給我最大感覺就是其架構特點,它通過將作為流行的兩款開源數(shù)據(jù)庫產品組合而成。做數(shù)據(jù)庫的同學都知道,MySQL、PostgreSQL 是全球最為流行的兩款開源數(shù)據(jù)庫,在近二、三十年的時間在全球范圍內得到了廣泛的應用。從下圖來自 db-engines 的流行度排名來看,這兩款產品排名前五,也是最為流行的開源數(shù)據(jù)庫。
圖片
作為流行的開源數(shù)據(jù)庫佼佼者,這兩款產品各有其優(yōu)勢和特點。MySQL 數(shù)據(jù)庫,在二十多年前隨著互聯(lián)網興起,得到了廣泛的應用,其以輕量化、簡潔著稱;特別是其核心的存儲引擎-InnoDB,更以其穩(wěn)定架構、卓越性能而成為默認存儲引擎,得到大量應用。PostgreSQL 數(shù)據(jù)庫,則是一種典型的學院派產品,業(yè)內常用一種說法,稱其是作為最為強大的開源數(shù)據(jù)庫,具備大量企業(yè)級能力(如優(yōu)化器等)??梢哉f,兩個數(shù)據(jù)庫各有所長,之前也在企業(yè)不同場景發(fā)揮著重要的作用。下表是針對兩種數(shù)據(jù)庫的功能對比。
圖片
這兩類數(shù)據(jù)庫各有所長,但也存在各自的短板。例如 MySQL 的優(yōu)化器能力、PostgreSQL 的存儲引擎的不定期 vacuum 問題。昆侖數(shù)據(jù)庫的設計之初,正是充分利用開源產品的優(yōu)點、規(guī)避其確定,發(fā)揮各自所長而形成的產品架構。
2)架構特點
昆侖數(shù)據(jù)庫的架構,是個典型的存算分離架構,跟很多國內分布式數(shù)據(jù)庫產品,如TDSQL、GoldenDB是比較相似的。其共有幾個部分組成:
- 計算集群,由一組無狀態(tài)的計算節(jié)點組成,實現(xiàn)上是通過 PostgreSQL 實例增強所成。用戶可以根據(jù)需要進行水平擴展,來滿足更好算力的需求。
- 存儲集群,由一組有狀態(tài)的存儲節(jié)點組組成。每個存儲節(jié)點組,是一個 MySQL 的主從復制集群。用戶可以根據(jù)需要進行水平擴展,即通過更多的數(shù)據(jù)分片滿足更大存儲空間的需求。
- 元數(shù)據(jù)集群,是整個集群的“大腦”,是由一組元數(shù)據(jù)節(jié)點組成。元數(shù)據(jù)節(jié)點集群,是一個 MySQL 的主從集群構成。其負責存儲集群內的元數(shù)據(jù)等功能,并可為多個集群共享使用。
- 管理集群,是整個集群的“四肢”,是由一組管理節(jié)點組成。管理集群,是通過 raft 協(xié)議維護的一組節(jié)點,其中的備節(jié)點是作為主節(jié)點宕機后快速頂替。其與上面的元數(shù)據(jù)集群,是一對一關系,可為多個集群提供服務。
- 輔助工具集,在集群外還有一組生態(tài)工具,完成包括圖形化管控、監(jiān)控、日志、導入導出等工作。
圖片
3)功能亮點
- 堅不可摧
作為一款分布式數(shù)據(jù)庫,昆侖數(shù)據(jù)庫集群在任一節(jié)點發(fā)生故障或者網絡故障,甚至機房整體故障,都不會丟失或者損壞用戶數(shù)據(jù),也不會影響業(yè)務系統(tǒng)正常運行。其下層使用的是 MySQL 的主從復制技術。眾所周知,MySQL 的主從復制技術存在一定缺陷,無法保證主從數(shù)據(jù)的強一致。昆侖數(shù)據(jù)庫基于自研的 fullsync 技術,提供金融級數(shù)據(jù)一致性和高可用性。在存儲主節(jié)點故障時,可在集群層面快速發(fā)現(xiàn)并通過主備切換快速解決。
- 彈性伸縮
昆侖數(shù)據(jù)庫的計算節(jié)點與存儲節(jié)點,均支持不停服的水平彈性伸縮,且不會對業(yè)務系統(tǒng)和邏輯以及終端用戶體驗造成任何影響;能夠均衡地利用所有服務器的計算和存儲資源來提供持續(xù)穩(wěn)定的服務能力。這一特點,可方便用戶的“敏態(tài)”業(yè)務,根據(jù)業(yè)務負載變化,隨時調整計算與存儲資源投入。
- 海納百川
昆侖數(shù)據(jù)庫應該還是業(yè)內唯一一款同時支持 MySQL 和 PostgreSQL 數(shù)據(jù)庫協(xié)議和語法的產品,并可以兼容常用的編程語言等。國內很多分布式數(shù)據(jù)庫都是通過開源數(shù)據(jù)庫擴展而來,因而支持 MySQL、支持 PostgreSQL,但同時支持目前看僅此一家。這種良好的生態(tài)兼容性,也方便用戶遷移上來。
- 極致性能
昆侖數(shù)據(jù)庫在官網文檔上,說明其性能大幅領先于競品,并稱確保在 TB 級別數(shù)據(jù)、數(shù)千連接、數(shù)十萬 QPS 仍然可以提供高吞吐率低延時的事務處理性能。針對這一點,個人還保持謹慎態(tài)度,不同的業(yè)務模型性能表現(xiàn)可能差異很大,企業(yè)還是需要根據(jù)自身業(yè)務特點進行評測。
- HTAP
昆侖數(shù)據(jù)庫通過其強大的優(yōu)化器和獨創(chuàng)的并行查詢能力,可實現(xiàn)數(shù)據(jù)的在線計算。即在聯(lián)機交易基礎上,實現(xiàn)一定能力的在線分析能力,即所謂的 HTAP 能力。
- 多模混算
昆侖數(shù)據(jù)庫提供了多模數(shù)據(jù)的存儲與計算能力,支持包括 JSON、GIS、Vector 等類型數(shù)據(jù)的存儲與計算。這對于用戶構建統(tǒng)一承載平臺無疑很有好處。
4)場景分析
可以說國內分布式數(shù)據(jù)庫非常繁多,如何在眾多產品中定位、選擇一款產品非常關鍵。這里通過一張簡圖進行說明,并嘗試將主要技術架構路線覆蓋范圍及昆侖數(shù)據(jù)庫所在定位進行描述。下圖將用戶的數(shù)據(jù)庫使用場景,簡單從數(shù)據(jù)容量、響應時長角度進行歸類。橫軸表示數(shù)據(jù)容量,越靠右規(guī)模越大;縱軸表示響應時延,越靠上時延越高。根據(jù)常規(guī)的的劃分,我們可以將數(shù)據(jù)使用場景,簡單分為 OLTP-聯(lián)機交易、HTAP-混合負載和 OLAP-聯(lián)機分析,其對應的數(shù)據(jù)規(guī)模和時延要求各有不同。從主要技術實現(xiàn)路線來看,可大致按照擅長的領域做下劃分,如下圖。其中會有部分場景上有所交叉。
圖片
昆侖數(shù)據(jù)庫架構上是屬于 share nothing 架構,覆蓋場景包括 OLTP、HTAP。其可在滿足承載大規(guī)模數(shù)據(jù)容量的前提下,提供有時延保證的數(shù)據(jù)訪問能力。支持多種數(shù)據(jù)分片的同時,也支持一定復雜度的在線數(shù)據(jù)分析。
2. 實踐昆侖數(shù)據(jù)庫
1)安裝部署
使用過分布式數(shù)據(jù)庫的朋友,可能都有這樣的感受。因分布式數(shù)據(jù)庫組件多、節(jié)點多,安裝部署非常麻煩。這也成為妨礙很多用戶嘗試新產品的最大阻力。昆侖數(shù)據(jù)庫這方面做到不錯,提供了 Docker、一鍵安裝等多種形式。這里為了省事,直接采用 Docker 方式。
圖片
2)使用體驗
一個數(shù)據(jù)庫的功能非常龐雜,因個人精力有限,只測試了部分功能。針對昆侖數(shù)據(jù)庫,其生態(tài)兼容性特點很突出,兼容了最為流行的兩款開源數(shù)據(jù)庫 MySQL 和 PostgreSQL。這里所說的兼容,包括了協(xié)議、語法等多層面。下面示例就將依次使用 PostgreSQL 和 MySQL 兩種方式,看看使用體驗如何。首先我們通過 PostgreSQL 方式連接測試實例,看看整體集群的情況。
圖片
然后在 MySQL 模式下做個簡單的 CRUD,看看數(shù)據(jù)庫表現(xiàn)如何。
圖片
從上面操作可見,昆侖數(shù)據(jù)庫實現(xiàn)了 MySQL、PostgreSQL 兩種數(shù)據(jù)庫的常見語法、方言及操作習慣。兩個生態(tài)的用戶都可以很方便的快速使用它。這無疑大大拓展了其受眾用戶,減低了使用門檻。作為國內分布式數(shù)據(jù)庫的一員,相信昆侖數(shù)據(jù)庫將在未來得到更廣泛的使用,也歡迎大家關注試用 http://klustron.com