這兩年,云原生數(shù)據(jù)庫(kù)風(fēng)起云涌,不管是老牌的數(shù)據(jù)庫(kù)廠(chǎng)商,還是大型云計(jì)算企業(yè)都在向這一趨勢(shì)靠攏。問(wèn)題是,什么是云原生數(shù)據(jù)庫(kù)?把數(shù)據(jù)庫(kù)搬上云就是云原生嗎?云原生數(shù)據(jù)庫(kù)和傳統(tǒng)數(shù)據(jù)庫(kù)相比有哪些區(qū)別?相信,很多人都是云里霧里!
云就緒不等于云原生
所謂“云原生”是指生在云上,長(zhǎng)在云上,在云上用。這樣一來(lái),是不是只有云計(jì)算企業(yè)提供的數(shù)據(jù)庫(kù)才是云原生數(shù)據(jù)庫(kù)?顯然,這一認(rèn)知不合乎客觀(guān)事務(wù)邏輯!傳統(tǒng)數(shù)據(jù)庫(kù)廠(chǎng)商雖然沒(méi)有自己的云,但如果它把數(shù)據(jù)庫(kù)架構(gòu)在其他云上,能支持分布式系統(tǒng),這依然是云原生數(shù)據(jù)庫(kù)。所以,判斷一款數(shù)據(jù)庫(kù)產(chǎn)品是不是云原生數(shù)據(jù)庫(kù),有兩條標(biāo)準(zhǔn)。一條是,是否充分利用了云技術(shù);另一條是,是否采用的是分布式系統(tǒng)。
當(dāng)然,雖然很多數(shù)據(jù)庫(kù)都能在云中運(yùn)行,但從云就緒到云原生,區(qū)別很大。云原生,是指所有的服務(wù)、軟件、API 或數(shù)據(jù)庫(kù)都能在云上運(yùn)行和部署,同時(shí)受益于云原生系統(tǒng)提供的其他能力。云就緒是以架構(gòu)優(yōu)化為基礎(chǔ),通過(guò)融合、集成等策略,對(duì)傳統(tǒng)IT架構(gòu)進(jìn)行現(xiàn)代化演進(jìn)。如果說(shuō),企業(yè)云原生之路要經(jīng)歷云就緒、云原生和無(wú)服務(wù)器三個(gè)階段。那么,云就緒就是云原生的第一個(gè)階段。所以,云就緒不等于云原生。
Kubernetes是云原生數(shù)據(jù)庫(kù)的“康莊大道”
還有,我們?cè)谡務(wù)撛圃鷶?shù)據(jù)庫(kù)的時(shí)候,總會(huì)提到Kubernetes。那么,云原生數(shù)據(jù)庫(kù)和 Kubernetes是怎樣一種關(guān)系呢?我們到底要不要把數(shù)據(jù)庫(kù)運(yùn)行在Kubernetes環(huán)境中?
其實(shí),如果你理解了云原生和容器之間的關(guān)系,就能判斷云上的數(shù)據(jù)庫(kù)到底要不要運(yùn)行在Kubernetes環(huán)境上。云原生架構(gòu)的最典型特征就是全面容器化,而Kubernetes是實(shí)現(xiàn)容器規(guī)模化發(fā)展的康莊大道。所以,云原生數(shù)據(jù)庫(kù)也一樣,需要在Kubernetes環(huán)境中運(yùn)行。但如何存儲(chǔ)、遷移數(shù)據(jù),保持?jǐn)?shù)據(jù)的現(xiàn)有狀態(tài),成為一大挑戰(zhàn)。
最開(kāi)始,Kubernetes是為無(wú)狀態(tài)工作負(fù)載設(shè)計(jì),但數(shù)據(jù)庫(kù)的需求剛好相反,需要數(shù)據(jù)的持久化存儲(chǔ)能力。之后,Kubernetes進(jìn)行了升級(jí),通過(guò)有狀態(tài)服務(wù)StatefulSets和持久化存儲(chǔ)Persistent Volumes的引入,輕松支持有狀態(tài)的工作負(fù)載。所以,云原生數(shù)據(jù)庫(kù)可以在 Kubernetes 環(huán)境上運(yùn)行,并能獲取更靈活、可擴(kuò)展的數(shù)據(jù)存儲(chǔ)和查詢(xún)服務(wù)。
云原生數(shù)據(jù)庫(kù)利用新的技術(shù)改進(jìn),將數(shù)據(jù)庫(kù)帶到云環(huán)境中,并體驗(yàn)到 Kubernetes帶來(lái)的彈性和可擴(kuò)展性等所有優(yōu)勢(shì)。
云原生數(shù)據(jù)庫(kù)是企業(yè)IT架構(gòu)不斷演進(jìn)的結(jié)果
隨著微服務(wù)和容器化趨勢(shì)的日益普及,需要一個(gè)與應(yīng)用趨勢(shì)相同的數(shù)據(jù)庫(kù),與之相匹配。而MySQL和MongoDB等傳統(tǒng)數(shù)據(jù)庫(kù)在可擴(kuò)展性、安全性和可訪(fǎng)問(wèn)性等方面存在諸多限制。盡管,它們可以與云集成,但在云中使用這些數(shù)據(jù)庫(kù)會(huì)受到各種應(yīng)用上的限制,不能充分體驗(yàn)到云帶來(lái)的優(yōu)勢(shì)。
以下是筆者總結(jié)的云原生數(shù)據(jù)庫(kù)的優(yōu)勢(shì):
1、可擴(kuò)展性強(qiáng)
云原生數(shù)據(jù)庫(kù)最典型特征是,具備很強(qiáng)的可擴(kuò)展性,可以根據(jù)工作負(fù)載靈活調(diào)動(dòng)資源,隨時(shí)擴(kuò)縮容。所以,用戶(hù)不用擔(dān)心因流量激增而導(dǎo)致存儲(chǔ)資源不足的問(wèn)題。按需付費(fèi),根據(jù)工作負(fù)載需求擴(kuò)大和縮小資源應(yīng)用,這點(diǎn)非常重要,也是云原生數(shù)據(jù)庫(kù)帶來(lái)的最重要優(yōu)勢(shì)之一。同時(shí),云原生數(shù)據(jù)庫(kù)還要確保數(shù)據(jù)安全,不能因系統(tǒng)故障而出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象。一旦意外宕機(jī),要及時(shí)把數(shù)據(jù)遷移到新的 Pod 或者節(jié)點(diǎn)上,并能自動(dòng)修復(fù)數(shù)據(jù)。
2、全面自動(dòng)化
在 Kubernetes 環(huán)境中運(yùn)行數(shù)據(jù)庫(kù),非常易于使用,能讓數(shù)據(jù)庫(kù)從代碼層面實(shí)現(xiàn)自動(dòng)化部署和管理。
3、快速部署
云原生數(shù)據(jù)庫(kù)與傳統(tǒng)數(shù)據(jù)庫(kù)部署方式不同,其云原生自帶的分布式數(shù)據(jù)庫(kù)技術(shù),使得數(shù)據(jù)庫(kù)部署更快,并且更容易訪(fǎng)問(wèn)。
4、節(jié)約成本
云原生數(shù)據(jù)庫(kù)能夠降低用戶(hù)的前期投入成本,借助云的彈性擴(kuò)展能力,讓用戶(hù)按需按量使用資源,優(yōu)化資源分配。
5、易于管理
由于云原生數(shù)據(jù)庫(kù)擁有自動(dòng)化和可擴(kuò)展性等特性,所以可以輕松管理數(shù)據(jù)庫(kù),調(diào)整相關(guān)資源。(李代麗)