域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)
作者:楊建榮 來(lái)源:微信公眾號(hào) 楊建榮的學(xué)習(xí)筆記
前段時(shí)間收到吳老師的邀請(qǐng),是參加青云QingCloud分布式數(shù)據(jù)庫(kù)(RadonDB)的一個(gè)技術(shù)體驗(yàn)活動(dòng),從今天的技術(shù)體驗(yàn)來(lái)算,收獲還是很多的,大家相聊甚歡,交流了很多工作中和工作之外的想法,原來(lái)那些我們看起來(lái)難走的路大家都曾經(jīng)走過(guò)。
總體來(lái)說(shuō)MySQL方向的目前的技術(shù)架構(gòu)是一種看起來(lái)相對(duì)穩(wěn)定的體系,一般來(lái)說(shuō)傳統(tǒng)的主從復(fù)制,半同步,一主多從,到分庫(kù)分表,加上中間件,高可用,好像可玩的花樣就差不多這些了,所以基于這些我們只能說(shuō)MySQL的這種使用方式是基于分布式架構(gòu),從CAP的角度來(lái)看,一致性(C),可用性(A),分區(qū)容忍性(P)方面很難都占全。
說(shuō)實(shí)話,最開始聽到RadonDB這個(gè)名字感覺(jué)很陌生,打開技術(shù)架構(gòu)圖,猛一看看好像沒(méi)有什么特別的新意,所以開始的環(huán)境部署和簡(jiǎn)單體驗(yàn)其實(shí)是帶著一種挑剔的眼光來(lái)看的,提出一些體驗(yàn)和兼容性的小問(wèn)題。
但是隨著下午和設(shè)計(jì)師雁飛和RadonDB團(tuán)隊(duì)的深入交流,發(fā)現(xiàn)這個(gè)架構(gòu)確實(shí)很有意思,能夠在已有的架構(gòu)模式下玩出新的花樣,而且確實(shí)解決了分布式方案的基本需求,很難得。
我來(lái)簡(jiǎn)單補(bǔ)充下產(chǎn)品里面的亮點(diǎn)。
1.首先整個(gè)一套方案都是打算開源的,目前在青云的產(chǎn)品線中已經(jīng)可以體驗(yàn)。從部署到使用,整個(gè)過(guò)程都是基于云平臺(tái)來(lái)完成,基礎(chǔ)運(yùn)維的成本很低。
2.從架構(gòu)設(shè)計(jì)的角度來(lái)說(shuō),RadonDB的設(shè)計(jì)定位充分利用了MySQL的開源紅利,存儲(chǔ)節(jié)點(diǎn)是直接使用MySQL5.7的版本,可以把存儲(chǔ)計(jì)算的任務(wù)下沉到MySQL層面,所以他是一套完全基于MySQL定制的分布式方案,架構(gòu)方式看起來(lái)比較輕量級(jí)。
3.對(duì)于關(guān)系型數(shù)據(jù)庫(kù)來(lái)說(shuō),要實(shí)現(xiàn)擴(kuò)容影響面是很大的。RandonDB在這里的實(shí)現(xiàn),上層是基于hash,存儲(chǔ)模式是基于Range,即一個(gè)大表也可以根據(jù)片鍵值的范圍橫向擴(kuò)展,比如一個(gè)大表是30G,那么如果是分為30個(gè)分片,那么沒(méi)一片的粒度就是1G,在這種代價(jià)下,做online DDL還是數(shù)據(jù)的遷移都是相對(duì)來(lái)說(shuō)可控的粒度,我個(gè)人最欣賞的就是它在彈性擴(kuò)容上的實(shí)現(xiàn)方式,能夠基于這種拆分思想,借鑒參考了Redis Cluster里面類似的思想,根據(jù)細(xì)粒度的slot級(jí)別的數(shù)據(jù)來(lái)實(shí)現(xiàn)擴(kuò)容。
4.在高可用上面值得一提的是一個(gè)獨(dú)立的工具M(jìn)ySQL Plus,這款工具可以基于5.7版本以上的GTID來(lái)滿足原來(lái)MHA所做的事情,然后基于半同步保證了數(shù)據(jù)的完整性,目前的整個(gè)一套方案都是基于Raft實(shí)現(xiàn)的。
當(dāng)然還有些其他的細(xì)節(jié)方面也做了一些蠻不錯(cuò)的改進(jìn):
1:比如審計(jì)日志的功能其實(shí)對(duì)于很多公司來(lái)說(shuō)還是有審計(jì)需求的
2:mydumper的定制,是基于go來(lái)實(shí)現(xiàn)的,能夠充分利用go的一些優(yōu)勢(shì)
3:壓測(cè)工具也是基于go做的一層定制,從現(xiàn)場(chǎng)的高可用測(cè)試來(lái)看,體驗(yàn)會(huì)好一些。
當(dāng)然在體驗(yàn)的過(guò)程中也發(fā)現(xiàn)了一些待改進(jìn)的地方,有些是顯示信息的補(bǔ)充和改進(jìn),有些則是技術(shù)實(shí)現(xiàn)方案上的建議等。我簡(jiǎn)單提兩點(diǎn):
首先,RandonDB的角色其實(shí)就是一個(gè)中間件,類似ProxySQL,MyCAT之類的中間件,能夠?qū)崿F(xiàn)基本的SQL轉(zhuǎn)發(fā),這里考慮到給以后的分布式事務(wù)設(shè)計(jì)帶來(lái)技術(shù)改進(jìn),目前的SQL Node是一個(gè)節(jié)點(diǎn)寫入,其他節(jié)點(diǎn)是只讀的。
對(duì)于OLAP的業(yè)務(wù)支持,其實(shí)從RadonDB的SQL轉(zhuǎn)發(fā),對(duì)于復(fù)雜,聚合的需求就可以直接下沉到計(jì)算節(jié)點(diǎn),對(duì)于計(jì)算節(jié)點(diǎn),目前的初步設(shè)計(jì)是使用插件的方式來(lái)實(shí)現(xiàn),設(shè)計(jì)團(tuán)隊(duì)的初步設(shè)想是引入MariaDB columnstore類似的方案來(lái)實(shí)現(xiàn),我有一個(gè)建議是也可以采用類似MPP的方式,畢竟MPP也是分布式方案的而一種,在這種架構(gòu)模式下就會(huì)充分用到存儲(chǔ)多副本的優(yōu)勢(shì),比如多個(gè)副本,我們可以利用其中的一個(gè)或者兩個(gè)的副本來(lái)滿足AP的需求,這樣對(duì)于主庫(kù)的寫入侵入性是最小的,而且能夠發(fā)揮當(dāng)前架構(gòu)的特點(diǎn),類似Greenplum中的segment節(jié)點(diǎn)的角色。
和RadonDB的團(tuán)隊(duì)交流中發(fā)現(xiàn),他們的團(tuán)隊(duì)規(guī)模其實(shí)不大,但是支撐起來(lái)這樣一個(gè)產(chǎn)品,能夠快速迭代出來(lái),著實(shí)讓人佩服。
RadonDB會(huì)在5月份開源發(fā)布,其實(shí)開源的不只是產(chǎn)品,還是一種開放的態(tài)度,希望RadonDB能夠給我們的運(yùn)維工作中帶來(lái)一些新的思路和改進(jìn)。
申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!