探秘UCloud UDB技術(shù)實(shí)踐之路
原創(chuàng)【51CTO.com原創(chuàng)稿件】“在整整六年時間里,UDB 始終和眾多用戶一同成長。”-----------UCloud云數(shù)據(jù)庫負(fù)責(zé)人羅成對
UCloud 云數(shù)據(jù)庫負(fù)責(zé)人羅成對
爆炸式增長的數(shù)據(jù)量、豐富的數(shù)據(jù)類型帶來了各種復(fù)雜的數(shù)據(jù)處理需求,云數(shù)據(jù)庫由于實(shí)現(xiàn)了按需付費(fèi)、按需擴(kuò)展、高可用性以及存儲整合等優(yōu)勢,受到了廣大用戶的歡迎,各種云數(shù)據(jù)庫紛紛涌現(xiàn)。
國內(nèi)中立的云計算服務(wù)商 UCloud 的云數(shù)據(jù)庫 UDB 產(chǎn)品在 2013 年正式商用,經(jīng)過 6 年的成功運(yùn)營,UDB 產(chǎn)品線越來越豐富。如 MySQL、MongoDB、PostgreSQL 以及 SQLServer,UCloud 云內(nèi)存產(chǎn)品 UMem,也涵蓋到 Redis 和 Memcache,目前已經(jīng)廣泛支持業(yè)內(nèi)主流數(shù)據(jù)庫。產(chǎn)品特性包括主從架構(gòu)、高可用、數(shù)據(jù)庫專區(qū)、獨(dú)享、跨區(qū)高可用、跨可用區(qū)災(zāi)備、讀寫分離、多維度彈性擴(kuò)展、備份與恢復(fù)、監(jiān)控與告警等。
“在整整六年時間里,UDB 始終和同眾多用戶一同成長。” UCloud 云數(shù)據(jù)庫負(fù)責(zé)人羅成對在接受記者采訪時表示。
UDB 產(chǎn)品的演進(jìn)之路
六年中,UDB 數(shù)據(jù)庫產(chǎn)品在不斷前行,總結(jié) UDB 的發(fā)展歷程,有幾條路徑可循。
首先,緊跟開源社區(qū)步伐。2013 年,UDB 從最流行的開源數(shù)據(jù)庫 MySQL 起步,首先推出了 MySQL 實(shí)例,2014 年在國內(nèi)首推了 MongoDB 云服務(wù),2016 年推出 PostgreSQL。
從最權(quán)威的 DB Engine 排名來看,結(jié)合 NoSQL 團(tuán)隊的 UMem 產(chǎn)品,UCloud 的數(shù)據(jù)庫產(chǎn)品覆蓋了 TOP 級的類型。
第二,從產(chǎn)品角度來看,UDB 產(chǎn)品逐漸從早期的資源型交付,轉(zhuǎn)為增值型交付。資源型交付可以簡單理解為“我購買的 UDB 是怎么樣的資源”,包括版本與機(jī)型、穩(wěn)定可靠、高性能、高可用、安全性、隔離等。增值型交付則可以理解為“自帶 DBA”,它是面向場景化的多面手,應(yīng)對在使用過程中場景化的需求,比如災(zāi)備、擴(kuò)容、遷移、調(diào)優(yōu)等。從 UDB 產(chǎn)品的發(fā)展歷程來看,現(xiàn)在越來越多的產(chǎn)品是在提供增值型的特性交付。
第三,從開源到自研。經(jīng)過自研能力的積累和沉淀,在 2016 年,UCloud 推出了自研分布式 UDB(即 UDDB),宣告 UCloud 在自研方面開花結(jié)果。
后續(xù)還有自研的讀寫分離,它是 UDB for MySQL 的性能加速器。未來 UCloud 云數(shù)據(jù)庫團(tuán)隊還將陸續(xù)推出更多自研、自主的數(shù)據(jù)庫產(chǎn)品。
演進(jìn)之路上邁過的那些“坎”
UCloud 提供 UDB 數(shù)據(jù)庫產(chǎn)品的愿景是完全消除“獲取門檻”和“使用門檻”。細(xì)想 UDB 發(fā)展歷程,作為親歷者的羅成對感覺負(fù)擔(dān)是很重的。“每道坎擺在面前,我和我的團(tuán)隊硬著頭皮邁過去,而且還得想著如何’完美’地邁過去” 。
羅成對將這些困難和挑戰(zhàn)總結(jié)為以下三個方面:
第一,產(chǎn)品質(zhì)量。早期 UDB 發(fā)展很快,產(chǎn)品功能矩陣越來越龐大,架構(gòu)越來越復(fù)雜,在這樣的情況下,如何做到產(chǎn)品質(zhì)量可控?UDB 資源型交付最基本的要求是穩(wěn)定性,一旦產(chǎn)品質(zhì)量存在很多隱患,合格交付就無從談起。UCloud 的解決之道是確定需求把控和軟件設(shè)計的合理性,從源頭上保證質(zhì)量。同時,簡化產(chǎn)品功能矩陣,優(yōu)化軟件架構(gòu)。
第二,規(guī)模和效率。隨著 UDB 產(chǎn)品規(guī)模不斷擴(kuò)大,如何提升產(chǎn)品運(yùn)營效率?UDB 產(chǎn)品團(tuán)隊構(gòu)建了包括自動化平臺、SRE、智能 DBA 在內(nèi)的運(yùn)營體系,用來持續(xù)提升運(yùn)營效率。這方面的工作持續(xù)在做。
第三,產(chǎn)品力。具備深度理解“用戶”的產(chǎn)品力,又得實(shí)現(xiàn)如何快速交付,是 UDB 產(chǎn)品團(tuán)隊目前的一個主要矛盾。在羅成對看來,這更是一個全方面的考驗(yàn),它既要求對用戶需求的深度理解,又要求對產(chǎn)品發(fā)展、技術(shù)發(fā)展看得足夠遠(yuǎn),并且在二者之間尋求一個平衡點(diǎn)。而在實(shí)踐道路上的考驗(yàn)來自于“快”,“天下武功唯快不破”,如何快速理解用戶需求,同時快速交付,是 UDB 產(chǎn)品團(tuán)隊一直努力的方向。
用高可用性、高性能、高可靠性解決用戶痛點(diǎn)
秉承著”用戶的需求就是 UCloud 下一個產(chǎn)品”的理念,UDB 產(chǎn)品的研發(fā)過程也緊密圍繞著用戶需求點(diǎn)來展開。這些需求點(diǎn)總結(jié)為三條時間曲線,分別是“性能或者吞吐量”、“可用性”、“價值或者用戶”。毫無疑問,用戶對這三條時間曲線的期望是一直向上,但是業(yè)務(wù)量增長時,數(shù)據(jù)庫的表現(xiàn)就不盡如人意,性能和可用性都會出現(xiàn)重大波動,長此以往,用戶體驗(yàn)就會變差,新業(yè)務(wù)無法上線,用戶出現(xiàn)流失。
UCloud 采用高可用性、高性能、高可靠性來解決這些痛點(diǎn)。
第一、在可用性方面,UCloud 的 UDB 產(chǎn)品達(dá)到了 99.95% 的可用率。在高可用 UDB 的實(shí)現(xiàn)上,經(jīng)過長期運(yùn)營,發(fā)現(xiàn)原有的 VIP+代理+DB 的架構(gòu)有很多問題,而這種技術(shù)架構(gòu)也是業(yè)界最為主流、最為成熟的實(shí)現(xiàn)。
UDB 產(chǎn)品團(tuán)隊對其進(jìn)行了進(jìn)一步架構(gòu)簡化,即采用更樸素的漂移 VIP+DB 雙主的實(shí)現(xiàn),在數(shù)據(jù)鏈路上減少一次轉(zhuǎn)發(fā),消除一個潛在性能瓶頸,并且簡化控制模塊,減少不可控因素。新架構(gòu)對數(shù)據(jù)庫(MySQL 和 PG)原生的兼容度更高。
第二,UCloud 一直追求更高性能,UDB 的性能優(yōu)化是一項長期的任務(wù)。高性能可以通過擴(kuò)展來實(shí)現(xiàn),比如主從、讀寫分離,性能等方面可以進(jìn)行線性加速的。
羅成對透露,最新一次針對 MySQL 的性能優(yōu)化后,在通用的場景下,QPS 提高到了 7.27 萬,TPS 提高到了 3.6k,相比之前有 32% 的性能提升。
同時,UDB 產(chǎn)品團(tuán)隊通過技術(shù)升級、硬件更迭、數(shù)據(jù)運(yùn)營等手段,從 2018 年開始針對不同產(chǎn)品進(jìn)行多次降價,降價幅度 30%-40% 不等。
第三,數(shù)據(jù)庫穩(wěn)定可靠,而且保持了極好的擴(kuò)展性,這是對成長型業(yè)務(wù)最有利的保障。在業(yè)務(wù)快速發(fā)展的不同階段,UDB 都有直接對應(yīng)的解決方案。
深耕行業(yè),滿足用戶需求
UDB 的用戶群廣泛分布在互聯(lián)網(wǎng)、電商、游戲、企業(yè)服務(wù)(SaaS/PaaS)、影音閱讀、傳統(tǒng)企業(yè)等各行各業(yè)。羅成對在采訪中介紹了幾個有代表性的場景。
1、游戲。游戲行業(yè)特點(diǎn)是爆發(fā)性強(qiáng),業(yè)務(wù)持續(xù)可用,業(yè)務(wù)迭代快。技術(shù)架構(gòu)上,多數(shù)架構(gòu)較為單一,即業(yè)務(wù)邏輯+DB,比較常見的是單區(qū)單服設(shè)計。這就要求系統(tǒng)可以快速開服,保持高可用性;性能要求高;設(shè)計模式(schema)靈活變更,而且異常情況下,誤操作可回滾;生命周期短,這就要求數(shù)據(jù)庫有良好的縮性。
UDB 可支持分鐘級并發(fā)創(chuàng)建(通常一分鐘內(nèi)交付),SSD+高可用機(jī)型是目前最主流搭配,性能和高可用得到充分保障,高可用 UDB 自帶在線的縮容,可應(yīng)對游戲生命末期運(yùn)營成本的開銷。UDB 自帶回滾功能,避免誤操作或者故障造成的損失。游戲廣泛使用 MongoDB 和 MySQL,其中 MongoDB 是 schema-free 的,schema 變更更為簡單。
2、電商。電商行業(yè)的特點(diǎn)是自身業(yè)務(wù)場景多樣,業(yè)務(wù)系統(tǒng)龐大,秒殺、促銷活動多。在數(shù)據(jù)庫上的要求是大并發(fā)條件下的高性能、穩(wěn)定可靠、易管理、易集成、重點(diǎn)保障、可監(jiān)控和可運(yùn)維。
UDB 歷史上經(jīng)過幾輪不斷的性能優(yōu)化,在主流配置條件下,都有不錯的 TPS 和 QPS 表現(xiàn),再配上免費(fèi)的“讀寫分離”功能,可完全應(yīng)對類秒殺場景下的并發(fā)突增。在產(chǎn)品上也提供多樣的選擇,比如獨(dú)享實(shí)例、數(shù)據(jù)庫專區(qū)方案,可多樣化滿足不同業(yè)務(wù)系統(tǒng)在性能上的要求,例如核心的交易系統(tǒng),通常會使用頂配的獨(dú)享型的高可用實(shí)例,充分保障業(yè)務(wù)穩(wěn)定。電商通常有自身的 DBA 團(tuán)隊和運(yùn)維體系,UDB 是 DBaaS 的形式,包括簡潔的 Web console 和多樣的 OpenAPI,可以實(shí)現(xiàn)很好的管理。另外,靈活可定制的能力,包括監(jiān)控、采集和個性化推送等,可實(shí)現(xiàn)與電商自身系統(tǒng)和運(yùn)維體系打通。
UCloud 一貫的鐵三角服務(wù)模式,配上后端 DBA 團(tuán)隊,對電商重點(diǎn)節(jié)日,如 517、618、雙 11、雙 12 等,進(jìn)行全方位的重點(diǎn)保障。
3、比較典型的互聯(lián)網(wǎng)應(yīng)用,個人 APP、廣告、社交、O2O、視頻、教育、閱讀等,它在成長期,業(yè)務(wù)特點(diǎn)是業(yè)務(wù)爆發(fā)性增長。每時每刻,數(shù)據(jù)庫都有可能是最薄弱一環(huán)。這背后考量要先抗住壓力再優(yōu)化,這就要求數(shù)據(jù)庫的多維度彈性,UDB 具備這樣的特點(diǎn)。性能維度上,在線配置升級、動態(tài)加從庫、免費(fèi)開讀寫分離,升級為數(shù)據(jù)庫專區(qū)內(nèi)的獨(dú)享型實(shí)例。UDDB 基于業(yè)內(nèi)應(yīng)用最為廣泛的數(shù)據(jù)庫中間件技術(shù)構(gòu)建,復(fù)用成熟的云數(shù)據(jù)庫產(chǎn)品 UDB 作為底層存儲,有效地突破了單機(jī)數(shù)據(jù)庫的容量和性能瓶頸。
在系統(tǒng)管理和業(yè)務(wù)訪問上,借助公有云的優(yōu)勢,UDDB 將中間件和 UDB 節(jié)點(diǎn)融合為一體,提供如同單機(jī)數(shù)據(jù)庫一樣的訪問接口和用戶體驗(yàn)。而 UDB 擴(kuò)展到分布式數(shù)據(jù)庫 UDDB,基本做到在線遷移。UDDB 是一把利器,容量不夠,動態(tài)擴(kuò)節(jié)點(diǎn),性能不夠,動態(tài)擴(kuò)節(jié)點(diǎn)。UDB 遷移到了 UDDB 真正過渡到一個全新階段。最新 UDDB 3.0 版本已完美支持分布式事務(wù)和分布式 Join,可做到極好的兼容性。
UDB 未來發(fā)展方向
談未來發(fā)展,首先要看清 UDB 的實(shí)質(zhì)。
首先,UDB 與 UCloud 云平臺一起演進(jìn),有三個驅(qū)動力,一是基礎(chǔ)設(shè)施驅(qū)動,包括最新硬件,如最新一代 CPU 和存儲,云平臺最新一代網(wǎng)盤和分布式存儲產(chǎn)品,底層物理網(wǎng)絡(luò),都在不斷推陳出新,能力越來越強(qiáng)。還有微服務(wù)和無狀態(tài)設(shè)計模式的普及,使數(shù)據(jù)庫在技術(shù)選型上更加多樣。
二是成本驅(qū)動,作為一款商品,大規(guī)模生產(chǎn)時,單位投入就會下降。同時,不斷引入最適合的硬件或者基礎(chǔ)設(shè)施,對成本控制非常有利。
三是規(guī)模驅(qū)動,實(shí)例越來越多,用戶越來越多,場景越來越多,這就要求更多場景化功能,以更快的速度,以“簡單易用”的產(chǎn)品交付到用戶手里。
在這三個驅(qū)動力作用下,未來 UDB 將會向三個方向發(fā)展:
• 一是能力和性能越來越強(qiáng),可靠性越來越高,比如正在自研的最新一代分布式數(shù)據(jù)庫 UXDB。
• 二是性價比會越來越高,普惠到更多用戶。通過技術(shù)降成本,或者通過運(yùn)營降成本,才是可持續(xù)的。
• 三是更高效的 UDB,主要體現(xiàn)在運(yùn)維效率,與 AI 技術(shù)的融合是很好的一條實(shí)現(xiàn)路徑。對用戶來說,則是 UDB 更加智能、好用,例如智能的 CloudDBA 是一個方向。
羅成對認(rèn)為,未來云數(shù)據(jù)庫的資源型屬性和增值型屬性的邊界將越來越模糊,增值型屬性將最終都轉(zhuǎn)化為資源型交付,完全集成到資源型交付中,用戶不再有使用門檻,簡單易用,不再有使用痛點(diǎn)和心理負(fù)擔(dān)。
拳頭產(chǎn)品:Redis 數(shù)據(jù)庫的進(jìn)展
UCloud 云數(shù)據(jù)庫產(chǎn)品多樣,UMem 產(chǎn)品里的 Redis 作為最主流的 Key-Value 內(nèi)存存儲,一直是 UCloud 的拳頭產(chǎn)品。近期推出了更大容量的 Redis 和更高性能的分布式 Redis。
1、更大容量的Redis
主備 Redis 最大容量提升至 64G,是為了滿足用戶對于大容量內(nèi)存存儲的需求,同時在應(yīng)用上需要使用分布式 Redis 目前無法支持的命令(比如事務(wù)命令)。
UCloud 針對這樣的需求,不僅更新了產(chǎn)品的軟件架構(gòu),同時采用了新型的大內(nèi)存機(jī)型,并在 CPU 單核處理能力和網(wǎng)絡(luò)的性能上有了大幅地提升,對應(yīng) Redis 內(nèi)存容量的提升,其處理性能也提升了 1 倍左右,來滿足用戶日益增長的工作負(fù)載。
2、更高性能的分布式 Redis
分布式 Redis 高性能版,滿足了互聯(lián)網(wǎng)用戶對于分布式緩存(以 Redis 為代表)高性能、高并發(fā)和低延時,以及彈性擴(kuò)縮容方面的要求。
在架構(gòu)精簡方面,多進(jìn)程的高性能代理,使得代理到后端 Redis 分片的延時盡可能降低。動態(tài)增刪 Redis 節(jié)點(diǎn)的主備 Redis 資源池,使分布式集群可實(shí)現(xiàn)性能和容量的彈性。在性能優(yōu)化的代理方面,單進(jìn)程性能可以達(dá)到 Redis 性能的 80%,并可以通過動態(tài)增加工作進(jìn)程來進(jìn)行性能上的擴(kuò)容。
更高性能的分布式 Redis 整體架構(gòu)關(guān)鍵組件均基于 Docker 容器化部署,方便后期使用容器編排來進(jìn)行管理,實(shí)現(xiàn)更動態(tài)地彈性擴(kuò)容來滿足用戶不同的負(fù)載要求。
UMem 產(chǎn)品的未來規(guī)劃,會持續(xù)跟進(jìn) Redis 社區(qū),推出更新版本的 Redis 及其新的功能;打造時序數(shù)據(jù)庫產(chǎn)品,滿足用戶在 IoT 和監(jiān)控方面的需求。第二是在跨可用區(qū)主備 Redis 的基礎(chǔ)上,推出跨可用區(qū)分布式 Redis,同時提供完善的數(shù)據(jù)備份和恢復(fù)技術(shù)方案。三是跟進(jìn)業(yè)界新型硬件及解決方案(包括更新架構(gòu)的 CPU,F(xiàn)PGA 運(yùn)算,裸金屬),提高內(nèi)存存儲的計算性能;在軟件層面提升單機(jī)及集群 Redis 的整體計算性能(包括單機(jī)多核化計算,讀寫分離集群方案等)。
后記
UCloud 數(shù)據(jù)庫團(tuán)隊的愿景是“降門檻”,即降低用戶獲取數(shù)據(jù)庫和使用數(shù)據(jù)庫的門檻。在羅成對看來,增值型交付仍然有使用門檻。云數(shù)據(jù)庫的未來發(fā)展,從產(chǎn)品角度來看短期內(nèi)是兩種屬性共存,長期來看會融合,最終只會是資源型交付。用戶使用數(shù)據(jù)庫產(chǎn)品是沒有任何心理負(fù)擔(dān)的,是簡單易用的。未來,UCloud 的數(shù)據(jù)庫產(chǎn)品(UDB 和 UMem)會越來越簡單易用。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】