如果熟悉Sharding Sphere應(yīng)該就會(huì)知道,它是Apache軟件基金會(huì)的頂級(jí)項(xiàng)目,其第一行代碼是2015年寫下,最初是為了解決互聯(lián)網(wǎng)電商場(chǎng)景數(shù)據(jù)庫(kù)分庫(kù)分表的需求,在2016年開始、開源,當(dāng)時(shí)它的名字還是Sharding JDBC。2017年發(fā)布了2.0版本,主打數(shù)據(jù)庫(kù)治理功能;2018年正式更名為Sharding Sphere,而Sharding JDBC則演變?yōu)樯鷳B(tài)圈中的一部分,并且在同年開發(fā)了具有獨(dú)立形態(tài)的Proxy代理,當(dāng)年10月份通過Apache的投票,正式成為Apache孵化項(xiàng)目,也再次更名為Apache Sharding Sphere。大概一年半時(shí)間左右,成為Apache頂級(jí)項(xiàng)目,到了2021年迎來(lái)了5.0版本,從而開啟一個(gè)新的機(jī)緣,提出了Databace Plus理念,是指構(gòu)建數(shù)據(jù)庫(kù)的上層標(biāo)準(zhǔn)。
簡(jiǎn)單來(lái)說(shuō),Sharding Sphere對(duì)于數(shù)據(jù)庫(kù)不是去替換,而是提供了增強(qiáng)能力,如分布式、數(shù)據(jù)加密等能力,在未來(lái)像6.0版本會(huì)推出全面云化的功能,7.0會(huì)面向生態(tài),這是大概的發(fā)展歷程。
從Sharding Sphere在Apache軟件基金會(huì)中的現(xiàn)狀看,目前Sharding Sphere現(xiàn)有Stars數(shù)有1.7人,Pull Requests有1.2萬(wàn),是非?;钴S的開源項(xiàng)目。
在去年官方發(fā)布的報(bào)告中,Sharding Sphere活躍度排名第7,貢獻(xiàn)者現(xiàn)在已經(jīng)有400多位,目前社區(qū)登記在用的企業(yè)應(yīng)該有200家以上,在學(xué)術(shù)方面,今年上半年社區(qū)在數(shù)據(jù)庫(kù)三大頂會(huì)的ICDE發(fā)布了論文,也在海外發(fā)布了權(quán)威指南,將理論和實(shí)踐相結(jié)合。
Sharding Sphere也進(jìn)入了CNCF全景圖,未來(lái)會(huì)在開源領(lǐng)域、云原生領(lǐng)域持續(xù)拓展、不斷精進(jìn),構(gòu)建一個(gè)有機(jī)的生態(tài)圈。在今年上半年,信通院聯(lián)合Sharding Sphere社區(qū)成立了金融用戶社區(qū),多家金融用戶分享相關(guān)的經(jīng)驗(yàn),希望有更多的金融用戶能夠加入到這里來(lái)。
隨著各行業(yè)的業(yè)務(wù)場(chǎng)景在快速的演進(jìn),隨之而來(lái)的是數(shù)據(jù)量體量越來(lái)越大、應(yīng)用場(chǎng)景越來(lái)越細(xì)分,數(shù)據(jù)庫(kù)技術(shù)站和DBA的路線都在向多樣化發(fā)展,對(duì)于DBA來(lái)講,打開運(yùn)維管理平臺(tái)的時(shí)候就非常容易看到至少三種數(shù)據(jù)庫(kù),時(shí)間如果向前20年,當(dāng)時(shí)的業(yè)務(wù)場(chǎng)景沒有現(xiàn)在這么復(fù)雜,反觀現(xiàn)在,使用單一的數(shù)據(jù)庫(kù)來(lái)處理所有的應(yīng)用場(chǎng)景情況基本看不到了,可以說(shuō)是數(shù)據(jù)庫(kù)技術(shù)處在一個(gè)快速的變革當(dāng)中,越來(lái)越多的數(shù)據(jù)庫(kù)像雨后春筍一般的出現(xiàn),我們正處在一個(gè)數(shù)據(jù)庫(kù)碎片化的趨勢(shì)當(dāng)中。
在這種數(shù)據(jù)庫(kù)碎片的趨勢(shì)之下,我們會(huì)面臨很多痛點(diǎn)問題,比如說(shuō)對(duì)于架構(gòu)師、研發(fā)人員或者運(yùn)維人員都有不同的挑戰(zhàn),可能是架構(gòu)選擇困難,如何在眾多的技術(shù)棧選擇一個(gè)合適的方案,以穩(wěn)定兼容度比較高的方式,做好分布式轉(zhuǎn)型、風(fēng)險(xiǎn)最小化,同時(shí)還有技術(shù)挑戰(zhàn)比較多、運(yùn)維復(fù)雜化以及現(xiàn)有數(shù)據(jù)庫(kù)之間缺乏協(xié)作等痛點(diǎn)。
在未來(lái)得發(fā)展趨勢(shì)上,應(yīng)該是一個(gè)多場(chǎng)景、多技術(shù)棧并存的狀態(tài),數(shù)據(jù)會(huì)應(yīng)該通過一個(gè)統(tǒng)一的平臺(tái)來(lái)為上層提供服務(wù)。在架構(gòu)轉(zhuǎn)型的過程中,業(yè)務(wù)系統(tǒng)對(duì)于數(shù)據(jù)庫(kù)的需求還是非常多的,比如如何實(shí)現(xiàn)分布式治理,如何實(shí)現(xiàn)可擴(kuò)展性,如何保障數(shù)據(jù)安全,還有不定期的一些其他的性能需求等等,這些需求在應(yīng)用中實(shí)現(xiàn)是可以的,只不過需要不斷重復(fù)的造輪子,比較麻煩,業(yè)務(wù)要重構(gòu)。如果放在數(shù)據(jù)庫(kù)當(dāng)中實(shí)現(xiàn),似乎難度更高,尤其是在異構(gòu)數(shù)據(jù)庫(kù)的協(xié)作方面,比如MySQL不能管理PG,反過來(lái)PG也不能管理MySQL,這樣的架構(gòu)對(duì)于異構(gòu)的需求以及對(duì)于集中數(shù)據(jù)庫(kù)構(gòu)建分布式數(shù)據(jù)庫(kù)的需求會(huì)更合適一些,既開放又穩(wěn)定。
這是對(duì)當(dāng)前技術(shù)發(fā)展趨勢(shì)的理解。
這里講講Sharding Sphere設(shè)計(jì)理念,首先需要了解Database Plus的理念,它是指在數(shù)據(jù)庫(kù)上一層構(gòu)建一個(gè)標(biāo)準(zhǔn)和生態(tài)層,它有三個(gè)核心特點(diǎn):連接、增強(qiáng)、可插拔。連接是為了達(dá)到數(shù)據(jù)庫(kù)上層標(biāo)準(zhǔn),相對(duì)提供一個(gè)全新的標(biāo)準(zhǔn),Database Plus更傾向于提供一個(gè)可以適配各種數(shù)據(jù)庫(kù)方案和標(biāo)準(zhǔn)協(xié)議層的中間層,它可以提供開放的接口,因?yàn)閷?duì)接各種各樣的數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)網(wǎng)關(guān)應(yīng)該是對(duì)連接最好的一個(gè)詮釋。
第二個(gè)是增強(qiáng),是指對(duì)數(shù)據(jù)庫(kù)計(jì)算引擎的增強(qiáng),數(shù)據(jù)庫(kù)經(jīng)歷了數(shù)十年的發(fā)展,本身就具備了非常優(yōu)秀的查詢優(yōu)化引擎能力、事故引擎和存儲(chǔ)引擎等等,這些都是久經(jīng)考驗(yàn)的,Database Plus采用了集中式傳統(tǒng)數(shù)據(jù)庫(kù)實(shí)踐經(jīng)驗(yàn),適配新一代數(shù)據(jù)庫(kù)實(shí)踐理念的想法,無(wú)論是對(duì)集中數(shù)據(jù)庫(kù),還是分布式數(shù)據(jù)庫(kù),Database Plus都能復(fù)用本身的計(jì)算和存儲(chǔ)能力,在這個(gè)基礎(chǔ)之上,我提供全局化的能力增強(qiáng),如數(shù)據(jù)分片、彈性伸縮、高可用等。
最后是可插拔層。它是構(gòu)建了數(shù)據(jù)庫(kù)功能和生態(tài),隨著數(shù)據(jù)庫(kù)類型和對(duì)接的能力不斷往里植入,會(huì)使Database Plus這一層越來(lái)越臃腫,連接和增強(qiáng)的可插拔化既是Database Plus通用層保持小而美的基石,也是擴(kuò)展生態(tài)無(wú)限化的保障。
可以說(shuō)Database Plus是Sharding Sphere的理論支撐,Sharding Sphere是Database Plus理念的最佳實(shí)踐,隨著Sharding Sphere越來(lái)越多的能力植入,對(duì)Database Plus的拼圖是越來(lái)越豐滿。目前Sharding Sphere根據(jù)Database Plus理念已經(jīng)完成了三大核心價(jià)值的大部分基礎(chǔ)設(shè)施建設(shè),在連接層Sharding Sphere已經(jīng)支持了MySQL、PG、OpenBase等這樣的數(shù)據(jù)庫(kù)協(xié)議,還有所有支持SQL 92標(biāo)準(zhǔn)的方向支持,在增強(qiáng)層可以劃分為內(nèi)核層和可選功能層,內(nèi)核層包含查詢?cè)苹?、分布式事?wù)等等內(nèi)核相關(guān)的功能,內(nèi)核的功能每個(gè)模塊是必須存在的,但是可以切換到不同的時(shí)間類型。
可選功能層的模塊是由社區(qū)沉淀出來(lái)的,除了具有代表性的數(shù)據(jù)分片和讀寫分離之外,高可用、彈性伸縮、數(shù)據(jù)加密、影子庫(kù)等等這種功能模塊都是在逐步的完善當(dāng)中的。
(本文根SphereEx解決方案專家代野演講速記整理而成)