深度稿 | UCloud數(shù)據(jù)庫產(chǎn)品演進(jìn)之路
日前,“UCloud用戶開放日”***期活動(dòng)順利舉行。UCloud關(guān)系型存儲研發(fā)部經(jīng)理羅成對系統(tǒng)梳理了UCloud數(shù)據(jù)庫產(chǎn)品UDB的發(fā)展歷程,并闡述了貫穿其中的產(chǎn)品設(shè)計(jì)理念,包括產(chǎn)品族介紹、架構(gòu)設(shè)計(jì)、未來規(guī)劃以及典型用戶案例。
UDB產(chǎn)品的前世今生
UDB是UCloud于2013年1月正式推出的第三款產(chǎn)品,***先支持的是應(yīng)用最廣泛的MySQL數(shù)據(jù)庫。經(jīng)過五年的發(fā)展,UDB產(chǎn)品線越來越豐富,目前已廣泛支持業(yè)內(nèi)主流數(shù)據(jù)庫,如MySQL、MongoDB、PostgreSQL以及SQL Server,產(chǎn)品特性包括主從架構(gòu)、高可用、數(shù)據(jù)庫專區(qū)、跨區(qū)高可用、讀寫分離、彈性擴(kuò)展、備份與恢復(fù)、監(jiān)控與告警等。
UDB產(chǎn)品非常適用于“三高”場景 —— 高性能、高可用、高并發(fā),滿足多行業(yè)的業(yè)務(wù)需求,包括游戲、電子商務(wù)、企業(yè)服務(wù)、O2O、在線教育等。和UDB一同成長起來的客戶在上云之初就將UDB作為***。2014年,《刀塔傳奇》在AppStore排行榜連續(xù)幾個(gè)月***冠軍,部署使用UDB后,高峰時(shí)期同時(shí)在線支持超過4000個(gè)實(shí)例,還不包括從庫,整體發(fā)展非常迅速,UDB良好地支持了業(yè)務(wù)的發(fā)展。
UDB產(chǎn)品設(shè)計(jì)理念
UDB發(fā)展至今,貫穿其中的產(chǎn)品設(shè)計(jì)理念歸結(jié)起來有兩點(diǎn):
◆ 用戶需求驅(qū)動(dòng)
UDB整體發(fā)展都緊跟用戶的需求,不斷進(jìn)行產(chǎn)品更新、迭代;
◆ 產(chǎn)品自然進(jìn)化
云數(shù)據(jù)庫從字面上看是“云+數(shù)據(jù)庫”,部署在云平臺上,也會跟隨著云平臺的發(fā)展而不斷成長。
一個(gè)好的互聯(lián)網(wǎng)產(chǎn)品的定義是:通過可行的技術(shù)創(chuàng)造以及可持續(xù)發(fā)展的產(chǎn)品能力,滿足用戶需求。
UCloud一直都秉持著的信念是“用戶需求就是我們的下一個(gè)產(chǎn)品”,這里的需求有兩個(gè)層面:
◆ 功能性需求
對于數(shù)據(jù)庫產(chǎn)品來說,它核心要解決的功能性需求是數(shù)據(jù)存儲、數(shù)據(jù)訪問安全。我們的理解是,數(shù)據(jù)放在這里,它怎么去落地、訪問、讀寫、保證數(shù)據(jù)安全可靠,這是基本的功能性需求。
◆ 附加性需求
附加性需求包括穩(wěn)定、容災(zāi)、容量、性能、性價(jià)比、可運(yùn)維等。
云數(shù)據(jù)庫產(chǎn)品,首先要滿足用戶的功能性需求,再一步步滿足用戶的附加性需求,這是UDB的產(chǎn)品設(shè)計(jì)理念。
UDB的產(chǎn)品演進(jìn)之路
云數(shù)據(jù)庫UDB發(fā)展了好幾年,需求層次從簡單到復(fù)雜,整個(gè)產(chǎn)品的演進(jìn)也從簡單到復(fù)雜,其背后的驅(qū)動(dòng)力可從內(nèi)外兩個(gè)方面來看:
◆ 外驅(qū)動(dòng)力
外驅(qū)動(dòng)力,是說用戶接入使用數(shù)據(jù)庫后,用戶本身的成長促使UDB產(chǎn)品不斷進(jìn)化,以滿足其新需求。比如,前面提到的《刀塔傳奇》,使用UDB后體量迎來爆發(fā)性增長,達(dá)到一定程度之后,需求層次也發(fā)生了變化,已經(jīng)不再局限于一些功能性需求,后面對一些附加性需求就越來越多了。
◆ 內(nèi)驅(qū)動(dòng)力
內(nèi)驅(qū)動(dòng)力,也就是說基礎(chǔ)設(shè)施在變化,給UDB提供基礎(chǔ)設(shè)施的是UCloud云平臺,基礎(chǔ)設(shè)施越來越便宜,云平臺的能力是不斷進(jìn)步的。另外一方面,性能更強(qiáng)勁、更具性價(jià)比的計(jì)算/存儲硬件不斷面世,也促使UDB汲取硬件價(jià)值,轉(zhuǎn)移到產(chǎn)品上。
這些內(nèi)外驅(qū)動(dòng)力共同推動(dòng)云數(shù)據(jù)庫的快速發(fā)展,縱觀整個(gè)UDB發(fā)展史,可以說經(jīng)歷了三重境界:
云數(shù)據(jù)庫1.0可以簡單理解為“云+數(shù)據(jù)庫”,在云上部署了一個(gè)數(shù)據(jù)庫。云有按需計(jì)價(jià)、快速交付、彈性擴(kuò)容、高速網(wǎng)絡(luò)、多可用區(qū)、虛擬化等一系列特點(diǎn),而數(shù)據(jù)庫本身解決了數(shù)據(jù)的結(jié)構(gòu)化存儲、標(biāo)準(zhǔn)化訪問、數(shù)據(jù)安全性等問題。可以說,云跟數(shù)據(jù)庫結(jié)合起來已能很好的滿足用戶功能性需求與部分附加性需求。
關(guān)于未來數(shù)據(jù)庫的發(fā)展,云數(shù)據(jù)庫已不再是簡單的“云+數(shù)據(jù)庫”,而是“云×數(shù)據(jù)庫”,功能更像是矩陣式進(jìn)化?,F(xiàn)在業(yè)界比較關(guān)注的AWS Aurora DB就非常典型,它是RDS發(fā)展到一定階段之后,克服了許多挑戰(zhàn),不斷自我迭代,進(jìn)化出的新一代產(chǎn)品,更好地覆蓋了用戶更高級的需求。目前來講,個(gè)人認(rèn)為Aurora DB很好地代表了數(shù)據(jù)庫2.0的階段。
UDB用戶案例解析
之前說到,UDB非常適用于“三高”場景,下面結(jié)合真實(shí)案例為大家解析UDB是如何應(yīng)用于這些業(yè)務(wù)場景的:
應(yīng)用場景之業(yè)務(wù)持續(xù)可用
應(yīng)用場景之高性能
應(yīng)用場景之彈性擴(kuò)容
應(yīng)用場景之高性價(jià)比
◆ 應(yīng)用場景之業(yè)務(wù)持續(xù)可用
我們做過一個(gè)調(diào)研:如果客戶開始使用的是單點(diǎn)數(shù)據(jù)庫,一旦宕機(jī),現(xiàn)場更換硬件短則需要幾分鐘,長則需要幾個(gè)小時(shí),而且這種因宕機(jī)導(dǎo)致業(yè)務(wù)不可用的情況,后果是非常嚴(yán)重的。
UDB則通過一個(gè)簡單、實(shí)用、可靠的基礎(chǔ)架構(gòu)解決了上述問題,它包括一個(gè)代理節(jié)點(diǎn)、主數(shù)據(jù)庫、備數(shù)據(jù)庫。
這種架構(gòu)的優(yōu)點(diǎn)在于:
1) 足夠簡單,因?yàn)樗慕M件比較少。架構(gòu)設(shè)計(jì)上,UDB一直奉行“簡單即可靠”。
2) 節(jié)點(diǎn)可以分布在不同的可用區(qū),可以滿足跨可用區(qū)的容災(zāi)需求。
通過主備模式,任意一個(gè)組件都有主備、熱備,因此可以做到兩層容災(zāi):DB容災(zāi)和Proxy容災(zāi)。下圖介紹了DB數(shù)據(jù)容災(zāi),DB容災(zāi)原先VIP代理的是一個(gè)主庫,進(jìn)行容災(zāi)時(shí)則代理備庫,非常簡單。
另外一個(gè)是Proxy容災(zāi),進(jìn)行VIP跨可用區(qū)漂移,在VPC2.0的網(wǎng)絡(luò)架構(gòu)下,可以直接從可用區(qū)1漂到可用區(qū)2。
以金融和保險(xiǎn)行業(yè)為例,金融行業(yè)因安保限制,需要“兩地三中心”架構(gòu)。UCloud的兩地三中心解決方案首先在北京機(jī)房建一個(gè)主庫,使用跨可用區(qū)的高可用產(chǎn)品,同時(shí)在上海有個(gè)備庫,中間通過UDPN網(wǎng)絡(luò)專線打通,結(jié)合UDTS數(shù)據(jù)傳輸產(chǎn)品,可進(jìn)行可靠的、持續(xù)的數(shù)據(jù)傳輸,這樣就能做到“兩地三中心”需求。
互聯(lián)網(wǎng)用戶也有“兩地三中心”的需求,將網(wǎng)絡(luò)UDPN打通之后,從庫能跟主庫自然進(jìn)行同步。只要把主從關(guān)系建立好,網(wǎng)絡(luò)打通,自然就能在這3個(gè)可用區(qū)進(jìn)行地域級容災(zāi)能力。MongoDB的兩地容災(zāi)方案更為簡單。
◆ 應(yīng)用場景之高性能
使用數(shù)據(jù)庫最容易出現(xiàn)的瓶頸就是I/O。普通DB面對I/O密集型的應(yīng)用非常被動(dòng),集中表現(xiàn)為DB反應(yīng)慢,緊接著的并發(fā)癥是網(wǎng)絡(luò)延遲增高、慢查詢增多、連接數(shù)增多,雪崩效應(yīng)很容易把DB打垮。
UCloud提供了一個(gè)解決方案——高性能SSD機(jī)型,底層采用PCI-e和NVMe SSD,其I/O能力吞吐量非常大。如果它對于性能要求更高,則推薦使用獨(dú)享實(shí)例,這樣可以使用整臺整機(jī),不會跟別人產(chǎn)生I/O的競爭;如果要求再高,那推薦分布式數(shù)據(jù)庫UDDB,不僅容量可以擴(kuò)展,性能也可以彈性擴(kuò)展。典型客戶包括互聯(lián)網(wǎng)、游戲、電商、社交這些對于I/O要求特別高的用戶。統(tǒng)計(jì)數(shù)據(jù)顯示,高性能SSD UDB已經(jīng)是不少用戶重要業(yè)務(wù)的***。
在單節(jié)點(diǎn)性能無法滿足業(yè)務(wù)需求的情況下,UCloud提供讀寫分離解決方案,完全可以做到性能成倍擴(kuò)展。顧名思義,讀寫分離就是“讀”和“寫”分開,“寫”可以放在一個(gè)節(jié)點(diǎn)上,“讀”可以放在其他從庫上,基礎(chǔ)架構(gòu)圖如下:
UCloud有一位做在線K歌APP的用戶從自建數(shù)據(jù)庫遷移到UCloud云平臺上,當(dāng)時(shí)用戶的數(shù)據(jù)庫因業(yè)務(wù)增長迅速,遇到了性能瓶頸,使用了這套讀寫分離方案之后,其性能成倍擴(kuò)展,用戶使用“1主帶5從”的架構(gòu),吞吐量可增長到6倍,不僅吞吐量上去,連接數(shù)也可以上去。因此,通過讀寫分離,業(yè)務(wù)將不再受單點(diǎn)連接數(shù)限制,也不再受單點(diǎn)容量的限制,可以平行擴(kuò)展數(shù)據(jù)庫吞吐能力,連接數(shù)上去,并發(fā)能力就越來越強(qiáng)了。
◆ 應(yīng)用場景之彈性擴(kuò)容
互聯(lián)網(wǎng)應(yīng)用有“起量很小,爆發(fā)很快”的特點(diǎn)。這些應(yīng)用對云平臺的彈性擴(kuò)容能力要求很高:首先,底層基礎(chǔ)架構(gòu)必須具備彈性擴(kuò)展能力,從應(yīng)用層來講,后端無狀態(tài)的服務(wù)非常好做彈性擴(kuò)展,但DB是有狀態(tài)的;其次,是存在熱點(diǎn)應(yīng)用,也就是說整個(gè)DB都是為了這個(gè)應(yīng)用在服務(wù),就容易把整個(gè)DB拖垮。
隨著業(yè)務(wù)的不斷發(fā)展,某應(yīng)用平臺后端的單點(diǎn)數(shù)據(jù)庫起初承受巨大的壓力。在UDB上,數(shù)據(jù)庫架構(gòu)一步步從MongoDB Primary單點(diǎn),到高可用副本集,再到分片集群演進(jìn),抗住了業(yè)務(wù)增長的壓力。數(shù)據(jù)量與分片個(gè)數(shù)成線性比例增加。
舉個(gè)例子,某家排行榜Top 10的社交應(yīng)用APP,其業(yè)務(wù)可能達(dá)到一年30億條數(shù)據(jù)量的增長,這還是比較保守的估計(jì)。該APP希望能有一款彈性擴(kuò)容,業(yè)務(wù)兼容性好且性價(jià)比優(yōu)的解決方案。當(dāng)時(shí),該應(yīng)用已經(jīng)每天有***的數(shù)據(jù)量,查詢已經(jīng)走了索引,簡單的SQL優(yōu)化對其來講并不能提升太多。
UCloud推薦的解決方案是UDDB。
這個(gè)方案有幾個(gè)優(yōu)勢,非常滿足這款社交應(yīng)用APP的需求:
彈性擴(kuò)容:應(yīng)對數(shù)據(jù)增長只需添加UDB節(jié)點(diǎn),將新產(chǎn)生的數(shù)據(jù)寫入新的節(jié)點(diǎn);
靜默擴(kuò)容:擴(kuò)容操作100%不影響業(yè)務(wù);
按需付費(fèi):業(yè)務(wù)上線前期,僅需購買1個(gè)節(jié)點(diǎn),存儲未來3個(gè)月數(shù)據(jù),如果業(yè)務(wù)快速增長,再添加節(jié)點(diǎn),避免前期投入過大;
業(yè)務(wù)高度兼容: 客戶業(yè)務(wù)程序僅改動(dòng)2條SQL。
◆ 應(yīng)用場景之高性價(jià)比
有些客戶業(yè)務(wù)涉及到海量數(shù)據(jù)存儲,比如物聯(lián)網(wǎng)場景,部分智能終端一天的數(shù)據(jù)采集量就有幾億規(guī)模。數(shù)據(jù)采集上來需要存儲并保留較長時(shí)間(比如3個(gè)月)。在面對這種高并發(fā)、數(shù)據(jù)持續(xù)寫入的情況時(shí),UDDB方案也能很好的滿足客戶需求。
針對類似場景,如果采用物理機(jī)自建,隱性投入很大,UCloud推薦高壓縮UDB+數(shù)據(jù)庫專區(qū)解決方案,能很好地降低數(shù)據(jù)庫成本。由于數(shù)據(jù)庫專區(qū)具有獨(dú)享性,這樣可以把整臺機(jī)器的利用率提升,專區(qū)的整機(jī)具有更大存儲空間,另外可以按時(shí)間滾動(dòng)重用。同時(shí)進(jìn)行DB壓縮之后,即使是普通數(shù)據(jù)盤也能滿足客戶需求,因?yàn)槲锫?lián)網(wǎng)應(yīng)用大量冷數(shù)據(jù)。***達(dá)到的效果是整個(gè)數(shù)據(jù)庫的規(guī)模壓縮比在3.2倍左右,數(shù)據(jù)量由原先150TB減少到目前52TB,總體成本節(jié)約26%。
UDB的未來展望
從UDB產(chǎn)品負(fù)責(zé)人的角度,對UDB未來的期待是——消除用戶對數(shù)據(jù)庫獲得和使用的門檻。現(xiàn)在,獲得門檻已經(jīng)消除,用戶可以方便地在線購買云數(shù)據(jù)庫。
隨著UDB產(chǎn)品逐漸成熟和完善,用戶只需做一些編排工作,后端應(yīng)用就可以直接用起來,而不必關(guān)注太多后端技術(shù)細(xì)節(jié)。但這還不夠,在云數(shù)據(jù)庫獲得門檻已基本解決的形勢下,降低使用門檻還要做很多努力。因此,今后要實(shí)現(xiàn)更多產(chǎn)品功能與特性來支持用戶業(yè)務(wù),將用戶完全從數(shù)據(jù)庫“解放”出來。