聊聊云原生數(shù)據(jù)庫
?回歸正題,前兩天有朋友在微信公眾號問我對云原生數(shù)據(jù)庫有沒有新的看法。實(shí)際上很多新興的概念,我的認(rèn)知也是從模糊到逐步清晰,有個(gè)過程的。每過一段時(shí)間,對于一些問題的看法就會(huì)有些變化。特別是一些比較新的,沒有嚴(yán)格定義的數(shù)據(jù)庫領(lǐng)域的新名詞。
對于云原生數(shù)據(jù)庫的問題,我以前也寫過幾篇文章談了我的認(rèn)知和看法,最近這段時(shí)間也有一些新的認(rèn)識。云原生數(shù)據(jù)庫是國外云廠商最先提出來的,最著名的是亞馬遜的aurora。我剛開始的時(shí)候把云原生數(shù)據(jù)庫和RDS搞混淆了,認(rèn)為云原生數(shù)據(jù)庫是RDS換了個(gè)更為高大上的名字而已。后來仔細(xì)研究以后發(fā)現(xiàn)不是那么回事,國外的一些云原生數(shù)據(jù)庫真對得起“云原生”這三個(gè)字。
首先,這些數(shù)據(jù)庫可以像其他云資源一樣便捷交付,包括可以支持自服務(wù)。這個(gè)特性與RDS是十分類似的,RDS可能在某些方面會(huì)做的比云原生數(shù)據(jù)庫更好。
其次是資源的動(dòng)態(tài)調(diào)度能力,云原生數(shù)據(jù)庫在CPU,內(nèi)存,存儲容量,IO能力等方面都可以十分便捷的動(dòng)態(tài)調(diào)度,可以隨著業(yè)務(wù)增長不斷交付新的計(jì)算能力,在這方面,云原生數(shù)據(jù)庫比RDS更為強(qiáng)大。
這些都是我們用戶能夠看到的能力,實(shí)際上云原生數(shù)據(jù)庫與普通的RDS的區(qū)別不僅僅如此。云原生數(shù)據(jù)庫充分利用云底座的能力構(gòu)建起支持提供云服務(wù)的能力。數(shù)據(jù)庫與云底座的能力的有機(jī)融合是云原生數(shù)據(jù)庫區(qū)別于其他數(shù)據(jù)庫的最為主要的特征。云廠商也會(huì)為了增強(qiáng)云原生數(shù)據(jù)庫的能力而在云底座上進(jìn)行優(yōu)化與擴(kuò)展,使其能力能夠更好的支撐云原生數(shù)據(jù)庫。
不是隨便一個(gè)數(shù)據(jù)庫從物理機(jī)搬到云環(huán)境里,做一些運(yùn)資源調(diào)度的接口,通過云平臺能夠向外提供數(shù)據(jù)庫服務(wù),就可以說這個(gè)數(shù)據(jù)庫是云原生數(shù)據(jù)庫了,這種數(shù)據(jù)庫頂多算是RDS之類的數(shù)據(jù)庫服務(wù),不能算是云原生數(shù)據(jù)庫。
我們還是以Aurora這個(gè)云原生數(shù)據(jù)庫的鼻祖級的數(shù)據(jù)庫來分析一下這個(gè)問題。Aurora支持Mysql和PG等數(shù)據(jù)庫,實(shí)際上也是使用開源的數(shù)據(jù)庫作為基礎(chǔ)研發(fā)的,我們今天以Postgresql為例。雖然Aurora也使用了PG的開源社區(qū)代碼作為基礎(chǔ),但是Aurora對PG做了適應(yīng)云的改造,那就是日志即數(shù)據(jù)庫概念的改造,通過WAL回放,Aurora可以實(shí)現(xiàn)基于共享存儲的一寫多讀。在一個(gè)Aurora PG實(shí)例中寫入的數(shù)據(jù),可以在多個(gè)(目前最多16個(gè))只讀PG實(shí)例中立即讀出,而不需要做數(shù)據(jù)庫復(fù)制,因?yàn)榈讓拥臄?shù)據(jù)文件是共享的。利用云底座的云存儲服務(wù),一方面Aurora可以從多副本的云存儲中通過均衡IO負(fù)載,從而提升IO的整體能力,Aurora還可以實(shí)現(xiàn)低延時(shí)的存儲級的數(shù)據(jù)庫復(fù)制,配合WAL回放進(jìn)一步擴(kuò)展數(shù)據(jù)庫的能力。
Aurora在CPU、內(nèi)存容量上的擴(kuò)展可以通過只讀實(shí)例去做橫向擴(kuò)展,IO容量可以通過云底座的云存儲去動(dòng)態(tài)擴(kuò)展,IO處理能力還可以通過云底座的多副本機(jī)制去做擴(kuò)展。數(shù)據(jù)庫與云底座的深度融合是Aurora作為云原生數(shù)據(jù)庫的基礎(chǔ)。向上的那些通過云平臺向外提供的服務(wù)能力實(shí)際上只是應(yīng)用層的了,和RDS區(qū)別并不大。
這里有一個(gè)觀點(diǎn),那就是云原生數(shù)據(jù)庫一定是要和具體的云深度融合的,亞馬遜的Aurora不可能在谷歌云上運(yùn)營,谷歌云上只能運(yùn)營AlloyDB之類的競品。
如果以Aurora為參考來看我們國內(nèi)的一些云原生數(shù)據(jù)庫,就更容易看明白了,不管是集中式數(shù)據(jù)庫還是分布式數(shù)據(jù)庫,不能說能在云上跑就算是云原生數(shù)據(jù)庫。如果我們把某著名的國產(chǎn)數(shù)據(jù)庫按照RDS的方式納管到某個(gè)云平臺上,能夠像云平臺內(nèi)的云原生數(shù)據(jù)庫一樣方便的使用,我們還是不能把這個(gè)數(shù)據(jù)庫叫作云原生數(shù)據(jù)庫,頂多就是RDS。因?yàn)閿?shù)據(jù)庫和云底座在本質(zhì)上并沒有深度的融合,云底座并沒有針對數(shù)據(jù)庫做相應(yīng)的優(yōu)化,數(shù)據(jù)庫也沒有為了更好的使用云底座的能力而做相應(yīng)的優(yōu)化改造。
再過兩天就要過年了,我也準(zhǔn)備休息休息。過年期間寫一些吃喝玩樂的心得,放松放松心情。過去的一年過得不容易,希望新的一年一切順利。?