“云計(jì)算無(wú)疑是今天名列第一的計(jì)算趨勢(shì) ,在數(shù)據(jù)庫(kù)領(lǐng)域同樣如此 ??蛻?hù)越來(lái)越喜歡云模式的按計(jì)算、彈性和幾乎無(wú)限的規(guī)模擴(kuò)展以及低成本的安裝和管理 ?!睍r(shí)任微軟SQLServer中國(guó)研發(fā)團(tuán)隊(duì)總經(jīng)理的Prakash Sundaresan 孫博凱(現(xiàn)為微軟亞太研發(fā)集團(tuán)首席技術(shù)官)在主題為“數(shù)據(jù)庫(kù)新征途—關(guān)系數(shù)據(jù)庫(kù)40年”的圓桌對(duì)話(huà)環(huán)節(jié)上表示到。那一年,是2010年。
也是在那一年,云計(jì)算技術(shù)的興起讓整個(gè)數(shù)據(jù)庫(kù)市場(chǎng)呈現(xiàn)暗流涌動(dòng)的狀態(tài),表現(xiàn)在以AWS Aurora為首的美國(guó)數(shù)據(jù)庫(kù)公司和以阿里云為首的中國(guó)數(shù)據(jù)庫(kù)公司紛紛開(kāi)啟了數(shù)據(jù)庫(kù)上云的新時(shí)代。在這個(gè)階段中,他們利用平臺(tái)管控的優(yōu)勢(shì),將用戶(hù)存儲(chǔ)在傳統(tǒng)單機(jī)架構(gòu)下的數(shù)據(jù)逐步遷移至云端,云原生數(shù)據(jù)庫(kù)的雛形初顯。
在距離孫博凱那段發(fā)言4年之后,AWS發(fā)布了業(yè)內(nèi)首個(gè)云原生數(shù)據(jù)庫(kù)Aurora。在3年后的9月份,阿里云在國(guó)內(nèi)率先發(fā)布了云原生數(shù)據(jù)庫(kù)PolarDB,并于2018年4月正式商用。
同年11月,騰訊云也緊隨其后,發(fā)布了新一代自研云原生數(shù)據(jù)CynosDB,“CynosDB的推出對(duì)于豐富騰訊云數(shù)據(jù)庫(kù)產(chǎn)品矩陣,提升騰訊云的產(chǎn)品技術(shù)能力具有里程碑的意義,同時(shí),良好的兼容特性和極致性?xún)r(jià)比,將大大推進(jìn)企業(yè)的’上云’進(jìn)程?!彬v訊云數(shù)據(jù)庫(kù)產(chǎn)品總監(jiān)祝百萬(wàn)在發(fā)布會(huì)上談到。
作為深諳“快速迭代”是產(chǎn)品研發(fā)范式演進(jìn)之道的互聯(lián)網(wǎng)科技公司,阿里云旋即于今年5月21日發(fā)布了PolarDB的重大更新,“提供傳統(tǒng)數(shù)據(jù)庫(kù)一鍵遷移上云能力,幫助企業(yè)將線(xiàn)下的MySQL、PostgreSQL和Oracle等數(shù)據(jù)庫(kù)輕松上云,最快于數(shù)小時(shí)內(nèi)遷移完成。”據(jù)阿里云方面精確計(jì)算,數(shù)據(jù)庫(kù)的云上成本不到傳統(tǒng)數(shù)據(jù)庫(kù)的1/6,截至當(dāng)天,已有將近40萬(wàn)個(gè)數(shù)據(jù)庫(kù)到阿里云上。此外,阿里云智能數(shù)據(jù)庫(kù)事業(yè)部負(fù)責(zé)人李飛飛在發(fā)布會(huì)上表示,“自70年代的關(guān)系型數(shù)據(jù)庫(kù)開(kāi)始,迄今為止已經(jīng)有50余年的歷史了,眼下的數(shù)據(jù)庫(kù)已經(jīng)到了一個(gè)變革的關(guān)鍵節(jié)點(diǎn),即從馬車(chē)時(shí)代到汽車(chē)時(shí)代的更迭。”
數(shù)據(jù)庫(kù)市場(chǎng)的格局正悄然發(fā)生改變
趨勢(shì)之下,往往預(yù)示著新技術(shù)在成本、技術(shù)上占絕對(duì)的領(lǐng)先優(yōu)勢(shì),對(duì)舊技術(shù)而言,這注定是一場(chǎng)被圍剿的行動(dòng)。美國(guó)知名科技領(lǐng)域分析機(jī)構(gòu)Gartner曾預(yù)測(cè),到2023年,全球3/4的數(shù)據(jù)庫(kù)都會(huì)跑在云上。換句話(huà)說(shuō),在接下的5年時(shí)間內(nèi),過(guò)去以線(xiàn)下數(shù)據(jù)庫(kù)為主導(dǎo)的市場(chǎng)態(tài)勢(shì)將逐步演進(jìn)到以云原生數(shù)據(jù)庫(kù)為導(dǎo)向的市場(chǎng)新態(tài)勢(shì)。
傳統(tǒng)商業(yè)數(shù)據(jù)庫(kù)市場(chǎng)未來(lái)預(yù)計(jì)將呈現(xiàn)下滑趨勢(shì) 數(shù)據(jù)來(lái)源:Gartner,安信證券研究中心
以傳統(tǒng)數(shù)據(jù)庫(kù)市場(chǎng)為例,市場(chǎng)運(yùn)作的基本模式為售賣(mài)傳統(tǒng)軟件許可證,線(xiàn)下用戶(hù)根據(jù)需求則需要按“核”購(gòu)買(mǎi),一“核”一年的費(fèi)用約為20萬(wàn)元,這其中還不包括后期的升級(jí)數(shù)據(jù)庫(kù)的費(fèi)用,高昂的初期部署的成本將大多數(shù)初創(chuàng)公司拒之門(mén)外。不久之前,Oracle就曾與國(guó)內(nèi)某大型央企展開(kāi)過(guò)曠日持久的談判,在售賣(mài)產(chǎn)品的基礎(chǔ)上,試圖讓其一次性繳納6000萬(wàn)的服務(wù)費(fèi)。
可以感受得到的是,過(guò)去幾十年是傳統(tǒng)數(shù)據(jù)庫(kù)的高光時(shí)刻,根據(jù)相關(guān)數(shù)據(jù)顯示,截至2017年數(shù)據(jù)庫(kù)市場(chǎng)總規(guī)模高達(dá)368億美元,其中傳統(tǒng)數(shù)據(jù)庫(kù)一度占比逾80%。但隨著傳統(tǒng)數(shù)據(jù)庫(kù)的日漸式微,讓企業(yè)不得不轉(zhuǎn)投云原生數(shù)據(jù)的懷抱,表現(xiàn)為近幾年傳統(tǒng)數(shù)據(jù)庫(kù)份額在逐年下降。據(jù)第三方機(jī)構(gòu)統(tǒng)計(jì),到2021年,傳統(tǒng)商業(yè)數(shù)據(jù)庫(kù)市場(chǎng)將下降20%至30%。阿里云智能數(shù)據(jù)庫(kù)事業(yè)部負(fù)責(zé)人李飛飛表示,“94%阿里云上的頭部客戶(hù)正在使用我們阿里云數(shù)據(jù)庫(kù)服務(wù),云上數(shù)據(jù)庫(kù)的使用率和阿里云頭部客戶(hù)交叉率是非常好的?!庇纱瞬浑y看出,原本傳統(tǒng)數(shù)據(jù)庫(kù)堅(jiān)實(shí)的防線(xiàn)正在被云廠(chǎng)商撕裂,交接將是時(shí)間長(zhǎng)短層面博弈的問(wèn)題。
從MongoDB的營(yíng)收構(gòu)成中也可一窺端倪。2016財(cái)年,Atlas營(yíng)收占比只有1%;2017財(cái)年中已經(jīng)提升至7%;而到2018財(cái)年第一季度,在總營(yíng)收中的占比已經(jīng)達(dá)到了11%。MongoDB Atlas,是其與公有云服務(wù)廠(chǎng)商合作,自身團(tuán)隊(duì)為客戶(hù)部署所打造的云數(shù)據(jù)庫(kù)。Atlas營(yíng)收迅速增長(zhǎng),可以反映出市場(chǎng)對(duì)于這種數(shù)據(jù)庫(kù)云化模式的認(rèn)可。
從技術(shù)便捷性的角度來(lái)分析,緣由傳統(tǒng)數(shù)據(jù)庫(kù)要跟現(xiàn)在的物理機(jī)器綁定,加之其已歷經(jīng)50余年的“用戶(hù)需求修改蠶食”,其內(nèi)核已經(jīng)變得尤為紛繁復(fù)雜,這也直接導(dǎo)致其迭代的速度變得十分緩慢。與此同時(shí),當(dāng)用戶(hù)的業(yè)務(wù)需求容量大于此前的預(yù)估容量時(shí),彼時(shí)傳統(tǒng)數(shù)據(jù)庫(kù)較低的可擴(kuò)展性能則顯得捉襟見(jiàn)肘。相比之下,云原生數(shù)據(jù)庫(kù)天生所具備的云計(jì)算的彈性能力以及開(kāi)源數(shù)據(jù)庫(kù)的易用、開(kāi)放特點(diǎn)卻讓其在互聯(lián)網(wǎng)的“數(shù)據(jù)大爆炸時(shí)代”之下適應(yīng)地游刃有余。
與此同時(shí),互聯(lián)網(wǎng)時(shí)代所帶來(lái)的爆炸性增長(zhǎng)的數(shù)據(jù)量和愈加繁復(fù)的數(shù)據(jù)類(lèi)型將迫使企業(yè) IT 架構(gòu)從傳統(tǒng)商業(yè)軟件進(jìn)化為互聯(lián)網(wǎng)架構(gòu),進(jìn)而應(yīng)對(duì)不可預(yù)測(cè)的峰谷流量和業(yè)務(wù)的快速創(chuàng)新。在《淘寶技術(shù)這十年》一書(shū)中,阿里技術(shù)人員回憶到,2004年左右,技術(shù)人員們花錢(qián)如流水,買(mǎi)得IOE(IBM的小型機(jī)、Oracle數(shù)據(jù)庫(kù)、EMC存儲(chǔ)設(shè)備)這三家的對(duì)口銷(xiāo)售年年升職。淘寶從起初的一個(gè)單機(jī)傳統(tǒng)數(shù)據(jù)庫(kù)、到4個(gè)節(jié)點(diǎn)、16個(gè)節(jié)點(diǎn),最后到20個(gè)節(jié)點(diǎn),成為是彼時(shí)全球最大的Oracle集群。
然而,兩個(gè)致命的問(wèn)題直接鎖住了國(guó)內(nèi)意欲打造自由傳統(tǒng)商業(yè)數(shù)據(jù)庫(kù)的可能性,其一是當(dāng)直面龐大的消費(fèi)者人群基數(shù)所帶來(lái)的更為復(fù)雜的數(shù)據(jù)類(lèi)型時(shí),傳統(tǒng)商業(yè)數(shù)據(jù)庫(kù)的改造性較差;其二,傳統(tǒng)數(shù)據(jù)庫(kù)的核心技術(shù)掌握在少數(shù)企業(yè)手中,安全問(wèn)題存在極大的不確定性,這里可以參考后期斯諾登所爆出來(lái)的棱鏡門(mén)事件。
在這樣的大環(huán)境之下,一旁的IOE則顯得格外突兀,對(duì)于大多數(shù)富有前瞻性和自衛(wèi)性(保持競(jìng)爭(zhēng)力)的數(shù)據(jù)庫(kù)公司來(lái)說(shuō),一場(chǎng)去IOE運(yùn)動(dòng)迫在眉睫。在去IOE化的過(guò)程中,最為重要的一點(diǎn)就是建立與支撐系統(tǒng)云化配套的運(yùn)行維護(hù)管理體系。對(duì)于阿里來(lái)說(shuō),引入云計(jì)算技術(shù)在讓計(jì)算資源得以靈活調(diào)配的同時(shí)也帶來(lái)了一些不確定性。傳統(tǒng)的分工界面、工作流程以及應(yīng)急預(yù)案都會(huì)隨著系統(tǒng)云化程度的加強(qiáng)而逐步變化,尤其在對(duì)軟件的維護(hù)方面,這將是一場(chǎng)顛覆性的考驗(yàn)。
改造首先從接入層實(shí)施了全面的云桌面正式開(kāi)始,緊接著是對(duì)CRM系統(tǒng)的接入模塊和BOSS系統(tǒng)的帳詳單存儲(chǔ)工作進(jìn)行云化試點(diǎn)。除了對(duì)硬件的虛擬機(jī)和X86化改造,阿里云也聚焦于基于分布式數(shù)據(jù)庫(kù)和開(kāi)源數(shù)據(jù)庫(kù)的應(yīng)用軟件改造,在一些新建的生產(chǎn)系統(tǒng)中,全部采用云計(jì)算技術(shù)進(jìn)行系統(tǒng)建設(shè)。對(duì)于阿里來(lái)說(shuō),這不亞于進(jìn)行一次“脫胎換骨”療程。換骨之后則是新生,在去年的雙11零點(diǎn)的第一秒,于這一秒內(nèi)云數(shù)據(jù)庫(kù)內(nèi)以極致的彈性頂住了瞬時(shí)增長(zhǎng)一百倍的洪峰,同時(shí)也支撐起去年的雙11,高達(dá)2135億的銷(xiāo)售額。
云原生數(shù)據(jù)庫(kù)的架構(gòu)之變
想要參透云原生數(shù)據(jù)庫(kù),首先要回歸產(chǎn)品本身所扮演的角色。如今處理數(shù)據(jù)不再是僅僅靠算力,主要集中于對(duì)智能化算法的研究,而算法又與用戶(hù)的需求息息相關(guān),進(jìn)而演進(jìn)出云原生數(shù)據(jù)庫(kù)的框架,即“完整的基礎(chǔ)設(shè)施云化、核心技術(shù)的互聯(lián)網(wǎng)化以及疊加’大數(shù)據(jù)+智能化’的平臺(tái)”。循著云原生數(shù)據(jù)庫(kù)的框架再對(duì)其進(jìn)行提煉,核心脈絡(luò)的三要素逐漸變得清晰,即“云計(jì)算在框架中僅作為基礎(chǔ)算力;行業(yè)算法是智能化處理數(shù)據(jù)的主要工具;形成’數(shù)據(jù)+智能花的平臺(tái)’的前提是基礎(chǔ)設(shè)施的云化和核心技術(shù)的互聯(lián)網(wǎng)化。”再深入一步思考云原生數(shù)據(jù)庫(kù)的模型,不難聯(lián)想到原生數(shù)據(jù)庫(kù)所扮演的其實(shí)是“數(shù)據(jù)中臺(tái)”的角色。
那么,什么是“數(shù)據(jù)中臺(tái)”?即通過(guò)數(shù)據(jù)技術(shù),對(duì)海量數(shù)據(jù)進(jìn)行采集、計(jì)算、存儲(chǔ)、加工,同時(shí)統(tǒng)一標(biāo)準(zhǔn)和口徑。數(shù)據(jù)中臺(tái)將數(shù)據(jù)統(tǒng)一之后,會(huì)形成標(biāo)準(zhǔn)數(shù)據(jù),再進(jìn)行存儲(chǔ),進(jìn)而形成大數(shù)據(jù)資產(chǎn)層,從而為客戶(hù)提供高效服務(wù)。以阿里云 PolarDB為例,其在原有的RAFT協(xié)議的基礎(chǔ)上開(kāi)發(fā)了一種全新的共識(shí)協(xié)議(ParallelRaft),在保障數(shù)據(jù)一致性的前提下,遵從共識(shí)協(xié)議提升了PolarFS并行寫(xiě)入性能,在高負(fù)載情況下,達(dá)到平均延遲縮短一半、系統(tǒng)吞吐量翻倍的效果。這也解釋了為什么PolarDB不再是一件單一的產(chǎn)品,而是充當(dāng)一套完整的生態(tài)框架協(xié)助企業(yè)將數(shù)據(jù)庫(kù)遷移上云。對(duì)此,阿里云數(shù)據(jù)庫(kù)產(chǎn)品總監(jiān)曹偉對(duì)鈦媒體表示,“提供智能是數(shù)據(jù)庫(kù)的未來(lái)發(fā)展方向,PolarDB將在后續(xù)版本中繼續(xù)圍繞“數(shù)據(jù)中臺(tái)”這一概念,向用戶(hù)提供多維分析和分析計(jì)算能力?!?/p>
與此同時(shí),厘清云數(shù)據(jù)庫(kù)的架構(gòu)方向也是理解云數(shù)據(jù)庫(kù)本質(zhì)的關(guān)鍵所在。當(dāng)下多模架構(gòu)成為云原生數(shù)據(jù)發(fā)展的主流趨勢(shì),即在一個(gè)數(shù)據(jù)庫(kù)平臺(tái)支持多種存儲(chǔ)方式,包括滿(mǎn)足應(yīng)用程序?qū)τ诮Y(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)的統(tǒng)一管理需求。一般來(lái)說(shuō),結(jié)構(gòu)化數(shù)據(jù)特指表單類(lèi)型的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),典型應(yīng)用為銀行核心交易等傳統(tǒng)業(yè)務(wù);半結(jié)構(gòu)化數(shù)據(jù)則在用戶(hù)畫(huà)像、物聯(lián)網(wǎng)設(shè)備日志采集、應(yīng)用點(diǎn)擊流分析等場(chǎng)景中得到大規(guī)模使用;而非結(jié)構(gòu)化數(shù)據(jù)則側(cè)重于海量的的圖片、視頻、和文檔處理等業(yè)務(wù),主要應(yīng)用在金融科技方面。多模架構(gòu)在降低使用和運(yùn)維的成本同時(shí),也完成跨部門(mén)、跨業(yè)務(wù)的數(shù)據(jù)統(tǒng)一存儲(chǔ)與管理,從而實(shí)現(xiàn)多業(yè)務(wù)數(shù)據(jù)融合,支撐起多樣化的服務(wù)。
此外,“計(jì)算-存儲(chǔ)層”分離現(xiàn)已演進(jìn)成主流的技術(shù)方向。那么,何謂“計(jì)算-存儲(chǔ)層”分離?即將協(xié)議解析、計(jì)算等模塊與底層存儲(chǔ)解耦,數(shù)據(jù)庫(kù)云平臺(tái)再將存儲(chǔ)層進(jìn)行分片以實(shí)現(xiàn)存儲(chǔ)的彈性水平擴(kuò)張,同時(shí)通過(guò)計(jì)算層的無(wú)狀態(tài)設(shè)計(jì)允許計(jì)算層通過(guò)增加節(jié)點(diǎn)數(shù)量線(xiàn)性提升計(jì)算能力,從而整個(gè)數(shù)據(jù)庫(kù)云平臺(tái)的彈性水平擴(kuò)張。簡(jiǎn)而言之,是指數(shù)據(jù)庫(kù)的存儲(chǔ)引擎和SQL引擎兩部分互相松耦合獨(dú)立工作的架構(gòu)。
一般來(lái)說(shuō),這種類(lèi)型的分離架構(gòu)由存儲(chǔ)、SQL和元數(shù)據(jù)三個(gè)模塊組成。存儲(chǔ)層是數(shù)據(jù)庫(kù)的存儲(chǔ)引擎,負(fù)責(zé)處理數(shù)據(jù)的存儲(chǔ)管理,同時(shí)包含路由及事務(wù)控制,保障數(shù)據(jù)的ACID特性,除此之外,存儲(chǔ)層還應(yīng)還具備索引、查詢(xún)條件過(guò)濾、排序等一系列功能;SQL層為中間件層,主要負(fù)責(zé)處理SQL請(qǐng)求,上層對(duì)接應(yīng)用程序,將應(yīng)用程序的訪(fǎng)問(wèn)請(qǐng)求分發(fā)給存儲(chǔ)層,并接收存儲(chǔ)層返回的數(shù)據(jù)結(jié)果;而元數(shù)據(jù)區(qū)負(fù)責(zé)存儲(chǔ)整個(gè)數(shù)據(jù)庫(kù)的所有元數(shù)據(jù)信息。目前AWS Aurora在SQL訪(fǎng)問(wèn)的單一過(guò)程上也采用了類(lèi)似的架構(gòu)。
數(shù)據(jù)來(lái)源:安信證券研究中心整理
無(wú)獨(dú)有偶,阿里云 PolarDB通過(guò)利用高速網(wǎng)絡(luò)做到分布式共享存儲(chǔ),從而達(dá)到“計(jì)算-存儲(chǔ)層”全面性的分離。這種分離架構(gòu)到來(lái)的直接影響是對(duì)存儲(chǔ)節(jié)點(diǎn)和技術(shù)節(jié)點(diǎn)進(jìn)行彈性索擴(kuò)容,緣由技術(shù)節(jié)點(diǎn)具備一寫(xiě)多讀的功能,進(jìn)而滿(mǎn)足云原生數(shù)據(jù)庫(kù)時(shí)代用戶(hù)在云上按需、按量使用、極致彈性等一系列在“馬車(chē)時(shí)代”的傳統(tǒng)數(shù)據(jù)庫(kù)所不能提供的服務(wù)。正是基于此架構(gòu)的上的技術(shù)優(yōu)勢(shì),讓阿里云 PolarDB在sysbench(一款開(kāi)源的多線(xiàn)程性能測(cè)試工具,可以執(zhí)行CPU/內(nèi)存/線(xiàn)程/IO/數(shù)據(jù)庫(kù)等方面的性能測(cè)試,目前是業(yè)界標(biāo)準(zhǔn)的測(cè)試評(píng)估工具)中拔得頭籌——“與傳統(tǒng)數(shù)據(jù)庫(kù)相比,阿里云 PolarDB多達(dá)十倍性?xún)r(jià)比;與國(guó)外領(lǐng)先的廠(chǎng)商(如AWS Aurora)相比,阿里云 PolarDB在某些情況下性能達(dá)到前者的兩倍?!?/p>
若技術(shù)層面來(lái)分析,阿里云 PolarDB采用的計(jì)算和存儲(chǔ)分離架構(gòu)讓“計(jì)算—存儲(chǔ)”資源池化。數(shù)據(jù)庫(kù)通過(guò)計(jì)算節(jié)點(diǎn)運(yùn)轉(zhuǎn),計(jì)算節(jié)點(diǎn)則組成了計(jì)算資源池;數(shù)據(jù)都存儲(chǔ)在存儲(chǔ)節(jié)點(diǎn)之上,同時(shí)存儲(chǔ)節(jié)點(diǎn)也組成了一個(gè)存儲(chǔ)資源池。當(dāng)CPU和內(nèi)存不能匹配需求時(shí),可以擴(kuò)充計(jì)算資源池,當(dāng)容量或IOPS(每秒進(jìn)行讀寫(xiě))不能匹配需求時(shí),則可擴(kuò)充存儲(chǔ)資源池,這兩個(gè)池都是按需擴(kuò)容,而且存儲(chǔ)節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)可以沿著兩個(gè)方向進(jìn)行優(yōu)化。
反觀(guān)傳統(tǒng)數(shù)據(jù)庫(kù)部署模型則是一種煙囪模型,一臺(tái)主機(jī)既要跑數(shù)據(jù)庫(kù)又要存取數(shù)據(jù),性能交叉之下帶來(lái)兩個(gè)問(wèn)題。其一,緣由CPU和磁盤(pán)的配比主要取決于實(shí)際業(yè)務(wù)的需求,很難提前找到最優(yōu)比例,直接導(dǎo)致難以選擇最為匹配的機(jī)型;其二,帶來(lái)了磁盤(pán)碎片問(wèn)題,在一個(gè)生產(chǎn)集群中存在部分使用率極低的機(jī)器磁盤(pán),有的甚至不到10%,但出于業(yè)務(wù)穩(wěn)定性要求,這些機(jī)器磁盤(pán)會(huì)獨(dú)占主機(jī)的CPU,對(duì)于主機(jī)的資源分配來(lái)說(shuō),這是一種極為奢侈的資源浪費(fèi)。通過(guò)存儲(chǔ)資源池化,這兩個(gè)問(wèn)題都能得到解決,SSD的利用率得到提高,成本自然也降低下來(lái)。
若從存儲(chǔ)成本的只讀實(shí)例來(lái)分析,緣由傳統(tǒng)數(shù)據(jù)庫(kù)做只讀實(shí)例。所謂的實(shí)施“一寫(xiě)多讀”方案,即通過(guò)搭建只讀副本的方案,先拷貝一個(gè)最近的全量備份恢復(fù)一個(gè)臨時(shí)實(shí)例,緊接著讓臨時(shí)實(shí)例連接主庫(kù)或者其它binlog(二進(jìn)制日志)源同步增量數(shù)據(jù)。當(dāng)數(shù)據(jù)增量追上時(shí),則將臨時(shí)實(shí)例加到線(xiàn)上升級(jí)為一個(gè)只讀副本。這種方式存在兩個(gè)問(wèn)題,一方面是耗時(shí),搭建一個(gè)只讀實(shí)例需要的時(shí)間往往與數(shù)據(jù)量成正比;另一方面費(fèi)用昂貴,這其中需要增加一份存儲(chǔ)的成本,例如當(dāng)用戶(hù)購(gòu)買(mǎi)一個(gè)主實(shí)例加上五個(gè)只讀實(shí)例,則需要付7~8份存儲(chǔ)的錢(qián)(其中是7份還是8份主要取決于主實(shí)例是兩副本還是三副本)。
而在阿里云 PolarDB架構(gòu)之中,這兩個(gè)問(wèn)題都得以很好的解決。其一,新增只讀實(shí)例無(wú)需拷貝據(jù),云原生數(shù)據(jù)的優(yōu)勢(shì)讓無(wú)論多龐大的數(shù)據(jù)量都可以于2分鐘之內(nèi)創(chuàng)建出來(lái);其二,主實(shí)例和只讀實(shí)例共享同一份存儲(chǔ)資源,通過(guò)這種架構(gòu)去增加只讀副本,可以做到零新增存儲(chǔ)成本。此時(shí),用戶(hù)只需支付只讀實(shí)例消耗的CPU和內(nèi)存的費(fèi)用即可。
阿里云PolarDB與傳統(tǒng)數(shù)據(jù)庫(kù)的成本對(duì)比 數(shù)據(jù)來(lái)源:阿里云官方
來(lái)自實(shí)際場(chǎng)景應(yīng)用對(duì)比之下的數(shù)據(jù)往往顯得真實(shí)的多,作為2007年全國(guó)第一家在港交所上市的零售行業(yè)的代表銀泰百貨,高額的數(shù)據(jù)庫(kù)運(yùn)維成本對(duì)銀泰來(lái)說(shuō)無(wú)異于一杯難以下咽的苦酒。據(jù)披露,銀泰僅在2016當(dāng)年光線(xiàn)下數(shù)據(jù)庫(kù)成本已經(jīng)達(dá)到了千萬(wàn)級(jí)別以上。于是乎銀泰決定把會(huì)員庫(kù)遷移到云原生數(shù)據(jù)庫(kù)平臺(tái),這一舉動(dòng)也讓銀泰收到了理想的效果。在去年雙11大促上,銀泰在頂住20倍峰值波動(dòng)的同時(shí),成本較傳統(tǒng)線(xiàn)下數(shù)據(jù)庫(kù)相比節(jié)省逾60%。
云原生數(shù)據(jù)庫(kù)的性能進(jìn)擊
華為云數(shù)據(jù)庫(kù)資深架構(gòu)師黃偉曾公開(kāi)表示到,“云原生數(shù)據(jù)庫(kù)其實(shí)是一個(gè)冰山模型,冰山之下的數(shù)據(jù)庫(kù)引擎云化才是其核心所在?!睌?shù)據(jù)真正被管理和處理是由數(shù)據(jù)庫(kù)引擎完成的,多數(shù)的云廠(chǎng)商會(huì)提供兩類(lèi):一類(lèi)是原生的數(shù)據(jù)庫(kù)引擎,第二類(lèi)則是優(yōu)化的數(shù)據(jù)庫(kù)引擎。根據(jù)黃偉團(tuán)隊(duì)的實(shí)驗(yàn),在32個(gè)連接數(shù)情況之下HWSQL比原生MYSQL性能好一些,但差距不明顯。伴隨著連接數(shù)的增多,以連接數(shù)8000個(gè)為例,HWSQL的性能大約是MySQL的十倍以上。由此觀(guān)之,經(jīng)過(guò)云優(yōu)化的數(shù)據(jù)庫(kù)引擎往往會(huì)比原生的數(shù)據(jù)庫(kù)提供更好的性能及可靠性。
以MySQL為例,用戶(hù)能感受到的首先是一個(gè)VM(虛擬機(jī))下面懸掛著一塊或者多塊盤(pán),云供應(yīng)商為了更高的可靠性,將用戶(hù)數(shù)據(jù)在云盤(pán)上會(huì)存儲(chǔ)在三個(gè)不同的機(jī)架上的三個(gè)不同的服務(wù)器上的三塊不同的盤(pán)中去,一旦其中任何一個(gè)結(jié)點(diǎn)或者任何一個(gè)機(jī)架或者任何一個(gè)數(shù)據(jù)中心宕機(jī),以確保數(shù)據(jù)庫(kù)系統(tǒng)仍然具備可用性。在這種模式下,加上MySQL在磁盤(pán)上自動(dòng)雙寫(xiě)的特性,MySQL的問(wèn)題顯露無(wú)遺,盤(pán)上大量的需要雙寫(xiě)的數(shù)據(jù),在給云上帶來(lái)極大的負(fù)擔(dān)同時(shí)也占用著網(wǎng)絡(luò)帶寬,處理事件時(shí)延也隨之增加。對(duì)于企業(yè)來(lái)說(shuō),數(shù)據(jù)庫(kù)的長(zhǎng)時(shí)延則是一個(gè)嚴(yán)重的缺陷。
而云上的“計(jì)算-存儲(chǔ)層”分離架構(gòu)卻很好的解決了這個(gè)問(wèn)題,分離的結(jié)果就是每個(gè)模塊專(zhuān)注自身的線(xiàn)程處理,計(jì)算結(jié)點(diǎn)和存儲(chǔ)結(jié)點(diǎn)可以獨(dú)立的去擴(kuò)展。此外,眾所周知,存儲(chǔ)在進(jìn)行容災(zāi)備份的同時(shí),數(shù)據(jù)庫(kù)也要做一份容災(zāi),此時(shí)存儲(chǔ)結(jié)點(diǎn)可以和備份容災(zāi)整合到一起,而計(jì)算結(jié)點(diǎn)下到存儲(chǔ)結(jié)點(diǎn)的數(shù)據(jù)只需要原來(lái)的七分之一,網(wǎng)絡(luò)帶寬占用和時(shí)延隨之提升,直接表現(xiàn)在性能上的大幅提升。
阿里云 PolarDB作為Gartner數(shù)據(jù)庫(kù)魔力想象中國(guó)唯一入選,主要得益于其在存儲(chǔ)引擎和計(jì)算引擎性能方面的優(yōu)化。在存儲(chǔ)引擎優(yōu)化方面,緣由關(guān)系型數(shù)據(jù)庫(kù)是IO(輸入與輸出)密集型應(yīng)用,因此想要提高數(shù)據(jù)庫(kù)的性能關(guān)鍵要提升IO的性能,這也解釋了為什么過(guò)去十年數(shù)據(jù)庫(kù)領(lǐng)域?yàn)楹我肧SD(固態(tài)硬盤(pán))替換HDD(機(jī)械硬盤(pán))。
縱深于數(shù)據(jù)庫(kù)處理的吞吐能力的提升除了需要前沿的硬件技術(shù),其中包括3DXpoint存儲(chǔ)介質(zhì)的Optane存儲(chǔ)卡(超高速內(nèi)存新技術(shù))、NVMe (邏輯設(shè)備接口規(guī)范)SSD和RoCE RDMA(新的內(nèi)存訪(fǎng)問(wèn)技術(shù))網(wǎng)絡(luò),還需要實(shí)現(xiàn)軟件棧整個(gè)IO鏈條的深度優(yōu)化,即將數(shù)據(jù)庫(kù)、文件系統(tǒng)、網(wǎng)絡(luò)通訊協(xié)議、分布式存儲(chǔ)系統(tǒng)以及設(shè)備驅(qū)動(dòng)貫通。于這一點(diǎn)上,阿里云 PolarDB通過(guò)在軟件層對(duì)高速的Optane卡和大容量高吞吐的NVMe SSD進(jìn)行組合,兩者兼并為混合存儲(chǔ)層,而混合存儲(chǔ)層的好處是既保證了數(shù)據(jù)寫(xiě)入的低延遲、高吞吐、高QoS(服務(wù)質(zhì)量),又使得整體方案兼具較高的性?xún)r(jià)比。
“PolarDB首次將OS Bypass(操作系統(tǒng)旁路)和零拷貝兩個(gè)核心技術(shù)運(yùn)用于云原生數(shù)據(jù)庫(kù)上?!崩铒w飛表示到。旁路內(nèi)核的作用則在于榨干硬件性能,為此阿里云數(shù)據(jù)庫(kù)團(tuán)隊(duì)大膽拋棄Linux內(nèi)核提供的機(jī)制(如塊設(shè)備)、文件系統(tǒng)入(如ext4)、TCP/IP協(xié)議棧和socket編程接口,選擇另起爐灶,開(kāi)發(fā)一整套在用戶(hù)態(tài)運(yùn)行的IO和網(wǎng)絡(luò)協(xié)議棧。
阿里云 PolarDB用戶(hù)態(tài)協(xié)議很好地解決了內(nèi)核IO協(xié)議快慢的問(wèn)題,一方面用戶(hù)程序在用戶(hù)態(tài)直接通過(guò)DMA(直接內(nèi)存存?。┎僮饔布O(shè)備,通過(guò)輪詢(xún)的方式監(jiān)聽(tīng)硬件設(shè)備完成IO事件,消除了上下文切換和中斷的開(kāi)銷(xiāo);另一方面,用戶(hù)程序?qū)O處理線(xiàn)程與cpu逐一進(jìn)行映射,每個(gè)IO處理線(xiàn)程都獨(dú)占CPU達(dá)到處理不同的IO請(qǐng)求和綁定不同的IO設(shè)備硬件隊(duì)列的效果。
值得一提的是,一個(gè)IO請(qǐng)求完整生命周期都在一個(gè)線(xiàn)程、一顆CPU上處理,無(wú)需鎖進(jìn)行互斥。這種技術(shù)最大化地實(shí)現(xiàn)了與高速設(shè)備進(jìn)行性能交互,實(shí)現(xiàn)在保持線(xiàn)性的擴(kuò)展能力的同時(shí),也讓一顆CPU高達(dá)約20萬(wàn)次/秒的IO處理能力,這也就意味著4顆CPU便可達(dá)到每秒80萬(wàn)次IO處理的能力,在性能和經(jīng)濟(jì)層面上遠(yuǎn)高于內(nèi)核。
“零拷貝”則意味著整個(gè)過(guò)程CPU不用訪(fǎng)問(wèn)被同步的數(shù)據(jù)塊,為了實(shí)現(xiàn)這一點(diǎn),阿里云 PolarDB巧妙地通過(guò)RDMA將日志數(shù)據(jù)發(fā)送到存儲(chǔ)節(jié)點(diǎn)內(nèi)存之中,存儲(chǔ)節(jié)點(diǎn)之間通過(guò)RDMA互相復(fù)制,每個(gè)存儲(chǔ)節(jié)點(diǎn)用SPDK將數(shù)據(jù)寫(xiě)入NVMe接口的存儲(chǔ)介質(zhì)里。主庫(kù)和只讀節(jié)點(diǎn)之間通過(guò)物理復(fù)制同步數(shù)據(jù),直接將數(shù)據(jù)更新到只讀節(jié)點(diǎn)的內(nèi)存里,從而從物理復(fù)制上實(shí)現(xiàn)數(shù)據(jù)庫(kù)的多副本。
在計(jì)算引擎性能優(yōu)化方面,首先阿里云 PolarDB針對(duì)高并發(fā)場(chǎng)景對(duì)引擎的內(nèi)部鎖做了大量?jī)?yōu)化,例如將latch(鎖存器)分解成粒度更小的鎖、將latch改成引用計(jì)數(shù)的方式從而避免鎖競(jìng)爭(zhēng)等,值得一提的是,阿里云PolarDB還將部分熱點(diǎn)數(shù)據(jù)結(jié)構(gòu)改成了Lock Free(無(wú)鎖)的結(jié)構(gòu),例如Server層的MDL鎖。
其次,緣由當(dāng)下多數(shù)SSD硬盤(pán)是4K對(duì)齊(一種高級(jí)硬盤(pán)使用技術(shù),用特殊方法將文件系統(tǒng)格式與硬盤(pán)物理層上進(jìn)行契合,為提高硬盤(pán)壽命與高效率使用硬盤(pán)空間提供解決方案),而MySQL代碼還是按照早期磁盤(pán)512字節(jié)對(duì)齊的方式刷日志的方式,帶來(lái)的直接表現(xiàn)則是讓磁盤(pán)進(jìn)行很多不必要的讀操作,從而局限了SSD盤(pán)的性能,因而阿里云PolarDB在日志提交過(guò)程中進(jìn)行了相關(guān)優(yōu)化,同時(shí)其采用的Double RedoLog Buffer(雙重日志緩沖區(qū))進(jìn)一步提升了并行度。
最后也是極為重要的一點(diǎn),阿里云 PolarDB除了在基于數(shù)據(jù)頁(yè)維度的并行性能提高上下足了功夫,還對(duì)物理復(fù)制中的必要流程進(jìn)行了相關(guān)的優(yōu)化,以在MTR日志中增加了一個(gè)長(zhǎng)度字段為例,這個(gè)簡(jiǎn)單的優(yōu)化操作節(jié)省了將近60%在日志解析階段所消耗的時(shí)間成本。此外,通過(guò)復(fù)用Dummy Index內(nèi)存數(shù)據(jù)結(jié)構(gòu),減少了其在Malloc/Free上的開(kāi)銷(xiāo),從而達(dá)到提高復(fù)制性能、降低時(shí)延的目的。
回歸理性,探索云原生數(shù)據(jù)庫(kù)的未來(lái)
云原生數(shù)據(jù)庫(kù)在近些年掀起的近乎燎原之勢(shì)主要得益于在其在成本層面和支持云服務(wù)層面的優(yōu)勢(shì),但我們必須清醒地認(rèn)識(shí)到,眼下的云原生數(shù)據(jù)庫(kù)還沒(méi)有步入真正的成熟(技術(shù)、市場(chǎng))階段,無(wú)法真正取代市場(chǎng)對(duì)傳統(tǒng)數(shù)據(jù)庫(kù)的需求。
眼下大多云計(jì)算廠(chǎng)商所開(kāi)發(fā)的數(shù)據(jù)庫(kù)系統(tǒng),市場(chǎng)目標(biāo)在于在自家產(chǎn)品的云上提供服務(wù),而不是作為傳統(tǒng)軟件賣(mài)許可證。因而,對(duì)于很多打算擺脫Oracle欲采用國(guó)產(chǎn)數(shù)據(jù)庫(kù),但因?yàn)橐恍┨厥獾脑蚰壳皼](méi)打算上云的用戶(hù)則錯(cuò)過(guò)此類(lèi)產(chǎn)品。
另一方面,緣由云計(jì)算供應(yīng)商所開(kāi)發(fā)的數(shù)據(jù)庫(kù)只能在自家的云上提供服務(wù),對(duì)于大多數(shù)獨(dú)立軟件商來(lái)說(shuō),他們往往更傾向于一個(gè)類(lèi)似傳統(tǒng)的、獨(dú)立的關(guān)系數(shù)據(jù)庫(kù),而這個(gè)數(shù)據(jù)庫(kù)可以在各個(gè)云計(jì)算平臺(tái)上運(yùn)行,因而目前仍停留在“云優(yōu)先”的戰(zhàn)略之中,即并非要求企業(yè)自動(dòng)的全“云”化,而是依據(jù)業(yè)務(wù)延伸的需要實(shí)時(shí)更新和優(yōu)化企業(yè)云戰(zhàn)略部署,逐步實(shí)現(xiàn)企業(yè)“云”化。
以工商銀行最近公布的最新集采、供應(yīng)商為例,甲骨文以9693.9萬(wàn)元入圍操作系統(tǒng)及數(shù)據(jù)庫(kù)類(lèi)軟件產(chǎn)品升級(jí)保護(hù)項(xiàng)目,這也從側(cè)面說(shuō)明了傳統(tǒng)商業(yè)數(shù)據(jù)庫(kù)仍具備著相當(dāng)?shù)牟豢扇〈?,云原生?shù)據(jù)庫(kù)是大趨勢(shì),但數(shù)據(jù)庫(kù)云上之路則是一個(gè)長(zhǎng)期的過(guò)程。
最后,目前云計(jì)算廠(chǎng)商主要業(yè)務(wù)為提供云服務(wù),而云計(jì)算供應(yīng)商在云上一般會(huì)提供多種數(shù)據(jù)庫(kù)平臺(tái),例如MySQL、PostgreSQL以及自研的數(shù)據(jù)庫(kù)。云廠(chǎng)商自研的數(shù)據(jù)庫(kù)只是其中一種,只是提供給客戶(hù)更多的選擇,并不見(jiàn)得有真正的優(yōu)勢(shì)。
從技術(shù)衍生階段的角度來(lái)看,云數(shù)據(jù)庫(kù)一般分三個(gè)階段,第一是數(shù)據(jù)庫(kù)的服務(wù)化,提供一個(gè)好的運(yùn)維,做好數(shù)據(jù)庫(kù)的體檢與服務(wù);第二是改進(jìn)引擎,針對(duì)云的基礎(chǔ)設(shè)施來(lái)提高它的性能和可靠性;第三是自研引擎,自研引擎的含義是基于云設(shè)計(jì),擁有著極高的性能/極大的規(guī)模/極高的可靠性。
以在中國(guó)云計(jì)算市場(chǎng)占主導(dǎo)地位的阿里云為例,阿里云數(shù)據(jù)庫(kù)產(chǎn)品總監(jiān)曹偉告訴鈦媒體,“目前阿里云正處于第三階段,在擁有100多項(xiàng)專(zhuān)利的同時(shí),還在去年的VLDB和今年的SIGMOD兩大數(shù)據(jù)庫(kù)全球頂級(jí)數(shù)據(jù)庫(kù)學(xué)術(shù)會(huì)議上發(fā)表了兩篇論文?!?/span> 明星產(chǎn)品阿里云 PolarDB自2014年立項(xiàng)研發(fā)至今,在5年的時(shí)間里,PolarDB迭代過(guò)程讓未來(lái)的云原生數(shù)據(jù)庫(kù)的模樣逐漸清晰,即一個(gè)數(shù)據(jù)庫(kù)既可滿(mǎn)足當(dāng)下多類(lèi)數(shù)據(jù)庫(kù)混合使用效果,又在自研能力和資金優(yōu)勢(shì)基礎(chǔ)之上以產(chǎn)品為契機(jī),進(jìn)而實(shí)現(xiàn)數(shù)據(jù)庫(kù)OLTP(聯(lián)機(jī)事務(wù)處理)與OLAP(聯(lián)機(jī)分析處理)一體化設(shè)計(jì),為企業(yè)的數(shù)字化升級(jí)所需的IT設(shè)施架構(gòu)實(shí)現(xiàn)變革性的進(jìn)化。
在傳統(tǒng)商業(yè)數(shù)據(jù)庫(kù)落后于國(guó)外之下,布局云原生數(shù)據(jù)庫(kù)或許能讓中國(guó)未來(lái)在數(shù)據(jù)庫(kù)領(lǐng)域扳回一城。
熱門(mén)推薦: 上海微信小程序 小程序開(kāi)發(fā) 小程序設(shè)計(jì) 支付寶小程序 百度小程序
