vivo 是一家全球性的移動(dòng)互聯(lián)網(wǎng)智能終端公司,品牌產(chǎn)品包括智能手機(jī)、平板電腦、智能手表等 ,截至 2022 年 8 月,已進(jìn)駐 60 多個(gè)國(guó)家和地區(qū),全球用戶(hù)覆蓋 4 億多人。
vivo 為用戶(hù)提供了在手機(jī)上備份聯(lián)系人、短信、便簽、書(shū)簽等數(shù)據(jù)的能力,底層存儲(chǔ)采用 MySQL 數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)。隨著 vivo 業(yè)務(wù)發(fā)展,用戶(hù)量增長(zhǎng)迅速,存儲(chǔ)在云端的數(shù)據(jù)量越來(lái)越大,海量數(shù)據(jù)給后端存儲(chǔ)和數(shù)據(jù)庫(kù)帶來(lái)了巨大的挑戰(zhàn)。云服務(wù)業(yè)務(wù)最大的痛點(diǎn),就是如何解決用戶(hù)海量數(shù)據(jù)的存儲(chǔ)問(wèn)題。
vivo 數(shù)據(jù)庫(kù)與存儲(chǔ)體系
vivo 數(shù)據(jù)庫(kù)與存儲(chǔ)體系產(chǎn)品矩陣
在整個(gè) vivo 云服務(wù)體系中,數(shù)據(jù)庫(kù)與存儲(chǔ)處于核心位置,從體系上可以分為兩層,最上面一層是工具產(chǎn)品層,包含數(shù)據(jù)庫(kù)存儲(chǔ)統(tǒng)一管控平臺(tái)、數(shù)據(jù)傳輸服務(wù)(支持?jǐn)?shù)據(jù)同步、數(shù)據(jù)訂閱、數(shù)據(jù)遷移等)、運(yùn)維白屏化工具等。下面一層是數(shù)據(jù)庫(kù)產(chǎn)品層,這一層又分為三個(gè)部分:一部分是 MySQL、 TiDB 等關(guān)系型數(shù)據(jù)庫(kù);一部分是 Redis、ElasticSearch、MongoDB、磁盤(pán) KV 等非關(guān)系型數(shù)據(jù)庫(kù);還有一部分是對(duì)象存儲(chǔ)、文件存儲(chǔ)、塊存儲(chǔ)等存儲(chǔ)服務(wù)。
vivo 數(shù)據(jù)庫(kù)與存儲(chǔ)運(yùn)營(yíng)管理
為了管理這些眾多的數(shù)據(jù)庫(kù)與存儲(chǔ)產(chǎn)品,vivo 打造了一個(gè)數(shù)據(jù)庫(kù)與存儲(chǔ)運(yùn)營(yíng)管理平臺(tái),主要分為三層架構(gòu):
·最底層是支撐、管理所有數(shù)據(jù)庫(kù)的工具產(chǎn)品,包含數(shù)據(jù)存儲(chǔ)服務(wù)、關(guān)系型數(shù)據(jù)庫(kù)、NoSQL 數(shù)據(jù)庫(kù),以及生態(tài)工具;
·中間是功能層,包括基礎(chǔ)存儲(chǔ)服務(wù)、數(shù)據(jù)管理服務(wù),以及存儲(chǔ)自治服務(wù);
·最上面是運(yùn)營(yíng)層,包括權(quán)限賬單、用戶(hù)管理、工單服務(wù)等基礎(chǔ)服務(wù)。同時(shí)還有一些安全相關(guān)服務(wù),如數(shù)據(jù)脫敏、數(shù)據(jù)加密、權(quán)限管控、命令通道、數(shù)據(jù)審計(jì)等一系列功能。
TiDB 在 vivo 的落地實(shí)踐
此前,vivo 已經(jīng)用了很多年關(guān)系型數(shù)據(jù)庫(kù) MySQL?;谠?MySQL 數(shù)據(jù)庫(kù),vivo 結(jié)合集群高可用的管理與數(shù)據(jù)庫(kù)代理的一體化架構(gòu),通過(guò)域名服務(wù)、名字服務(wù)進(jìn)行接入,提供通用的關(guān)系型數(shù)據(jù)庫(kù)服務(wù)。它主要具有三大核心能力:
·第一,兼容 MySQL 協(xié)議與 SQL 語(yǔ)法;
·第二, 增強(qiáng) MySQL 集群管控能力。vivo 引入 MySQL 的時(shí)間很早,在 MySQL 的一些集群管控能力上都有自研的能力;
·第三,安全增強(qiáng)能力,包括密碼管理、數(shù)據(jù)脫敏、數(shù)據(jù)加密等能力。
本質(zhì)上 MySQL 架構(gòu)還是一個(gè)主從架構(gòu),并沒(méi)有分布式技術(shù)引入。針對(duì)數(shù)據(jù)量較大、流量較大的場(chǎng)景,或者分析場(chǎng)景,給業(yè)務(wù)帶來(lái)了巨大挑戰(zhàn)。基于以上原因,vivo 在對(duì)比了主流分布式數(shù)據(jù)后后考慮引入分布式關(guān)系型數(shù)據(jù)庫(kù)TiDB,作為關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品矩陣的一環(huán),補(bǔ)充整個(gè)關(guān)系型數(shù)據(jù)庫(kù)的能力。
引入TiDB 幫助 vivo 解決了一些在 MySQL 生態(tài)中無(wú)法解決的問(wèn)題:
·TiDB 可以解決數(shù)據(jù)量過(guò)大、流量過(guò)大的問(wèn)題,以及海量數(shù)據(jù)分析的場(chǎng)景;
·TiDB 兼容MySQL語(yǔ)法,業(yè)務(wù)遷移比較平滑;
·TiDB 支持水平擴(kuò)展,相比傳統(tǒng)的 MySQL 復(fù)雜的分庫(kù)分表方式,TiDB 的擴(kuò)展能力大大降低了運(yùn)維壓力;
·TiDB 具備數(shù)據(jù)強(qiáng)一致性、高可用性,可以提供金融級(jí)數(shù)據(jù)安全性。
vivo 研發(fā)團(tuán)隊(duì)具有較強(qiáng)的自研能力,他們將內(nèi)部所有數(shù)據(jù)庫(kù)統(tǒng)一實(shí)現(xiàn)了平臺(tái)化管理,這是一種提供高度自助、高度智能化、高可用、低成本的數(shù)據(jù)存儲(chǔ)使用與管理平臺(tái),包含從數(shù)據(jù)庫(kù)服務(wù)的申請(qǐng)、部署、維護(hù)、變更、優(yōu)化,以及數(shù)據(jù)恢復(fù)、服務(wù)下線(xiàn)等一系列數(shù)據(jù)庫(kù)全生命周期的管理。
在應(yīng)用 TiDB 后,vivo 研發(fā)團(tuán)隊(duì)同樣也將 TiDB 集成到該平臺(tái)中,實(shí)現(xiàn)諸如 TiDB 的自動(dòng)化部署、服務(wù)維護(hù)、數(shù)據(jù)變更、數(shù)據(jù)恢復(fù),包括一些還在持續(xù)建設(shè)中的能力,如服務(wù)優(yōu)化、服務(wù)變更。這些能力與 vivo 的全球化業(yè)務(wù)場(chǎng)景息息相關(guān)。全球化業(yè)務(wù)場(chǎng)景要求更好滿(mǎn)足于本地客戶(hù)服務(wù),以及符合本地?cái)?shù)據(jù)安全相關(guān)的一些管理規(guī)范。所以 vivo 的服務(wù)都是本地化部署,平臺(tái)化的管理方式可以幫助運(yùn)維、研發(fā)更好地支撐業(yè)務(wù)研發(fā)或者業(yè)務(wù)變更的效率。
該平臺(tái)一方面提升了 vivo 整個(gè)數(shù)據(jù)服務(wù)的安全性,如賬號(hào)密碼管控、敏感數(shù)據(jù)加密脫敏、集成的研發(fā)效能等。在業(yè)務(wù)開(kāi)發(fā)團(tuán)隊(duì)需要一個(gè) TiDB 服務(wù)的時(shí)候,幾分鐘內(nèi)就能得到一款分布式數(shù)據(jù)庫(kù)進(jìn)行代碼開(kāi)發(fā),降低了運(yùn)維管理成本;運(yùn)維(DBA)再也不需要登陸服務(wù)器執(zhí)行各種涉鑰命令;最后,平臺(tái)也大大提升了數(shù)據(jù)的可用性。vivo 數(shù)據(jù)庫(kù)團(tuán)隊(duì)將一些 TiDB 的備份恢復(fù)工具及數(shù)據(jù)庫(kù)的可用性也集成在平臺(tái)里。
應(yīng)用場(chǎng)景
推送業(yè)務(wù)基于 TiDB 的海量數(shù)據(jù)實(shí)時(shí) OLAP 方案
vivo 的推送業(yè)務(wù)基于 TiDB 實(shí)現(xiàn)了一套實(shí)時(shí) OLAP 方案。該場(chǎng)景中具有千億級(jí)別的數(shù)據(jù)指標(biāo),vivo 希望數(shù)據(jù)在數(shù)據(jù)指標(biāo)寫(xiě)入時(shí)可以實(shí)現(xiàn)秒級(jí)入庫(kù)。同時(shí),該場(chǎng)景還要求以月度為范圍秒級(jí)出報(bào)表。原方案中使用了其他 OLAP 數(shù)據(jù)庫(kù)方案或 MySQL 方案,在出報(bào)表時(shí)總會(huì)給數(shù)據(jù)庫(kù)集群服務(wù)造成很大壓力,指標(biāo)的計(jì)算性、時(shí)效性也很差。尤其當(dāng)面臨海量數(shù)據(jù)時(shí),查詢(xún)與指標(biāo)變更成本會(huì)變得很高。引入 TiDB 后,vivo 可以從實(shí)時(shí)鏈路里直接把數(shù)據(jù)秒級(jí)寫(xiě)入,再通過(guò) DM 工具,把關(guān)系型數(shù)據(jù)庫(kù)里面維度的數(shù)據(jù),以及其他相關(guān)聯(lián)的數(shù)據(jù)都同步過(guò)來(lái),最終在 TiDB 中進(jìn)行多表關(guān)聯(lián),為最終用戶(hù)提供數(shù)據(jù)服務(wù),如 BI 報(bào)表等。在該場(chǎng)景中,TiDB 的高性能、低延時(shí)等特性解決了 vivo 數(shù)據(jù)量大、時(shí)效性高等難題。
云服務(wù)業(yè)務(wù)基于 TiDB 的海量元數(shù)據(jù)管理方案
vivo 云服務(wù)是 vivo 為用戶(hù)提供的在手機(jī)上進(jìn)行數(shù)據(jù)備份、數(shù)據(jù)恢復(fù)同步的一款服務(wù)。這款服務(wù)用到了對(duì)象存儲(chǔ)與文件存儲(chǔ),同時(shí)有大量的元數(shù)據(jù)需要存儲(chǔ)。原方案使用了 MySQL 分庫(kù)分表的方式,但 MySQL 實(shí)際上還是一個(gè)單集群方案,分庫(kù)分表的業(yè)務(wù)邏輯需要在業(yè)務(wù)層實(shí)現(xiàn),這就需要解決復(fù)雜的業(yè)務(wù)邏輯問(wèn)題。同時(shí),分庫(kù)分表造成運(yùn)維十分困難,擴(kuò)容成本高、擴(kuò)容耗時(shí)間長(zhǎng)?;谝陨显?,vivo 基于 TiDB 實(shí)現(xiàn)了一套海量元數(shù)據(jù)管理方案,支撐了 vivo 百億級(jí)別的元數(shù)據(jù)表和日志數(shù)據(jù)表存儲(chǔ),核心業(yè)務(wù)時(shí)延小于 50ms。
基于 TiKV 自研的 NoSQL 數(shù)據(jù)庫(kù)實(shí)踐
由于 TiDB 整個(gè)產(chǎn)品都采用開(kāi)源的模式,vivo 并沒(méi)有滿(mǎn)足于只作為 TiDB 的使用者,還基于 TiDB 的底層存儲(chǔ)引擎 TiKV 自研了一款 NoSQL 數(shù)據(jù)庫(kù),希望能夠?qū)崿F(xiàn)一個(gè)高性能的、高穩(wěn)定的多數(shù)據(jù)模型的分布式數(shù)據(jù)庫(kù),用以服務(wù)內(nèi)部大數(shù)據(jù)量存儲(chǔ)場(chǎng)景,降低整體數(shù)據(jù)庫(kù)的運(yùn)營(yíng)成本,同時(shí)還針對(duì)一些 AI 特殊業(yè)務(wù)場(chǎng)景的應(yīng)用進(jìn)行定制優(yōu)化。
在此之前,vivo 的 NoSQL 數(shù)據(jù)庫(kù)產(chǎn)品矩陣中 KV 產(chǎn)品實(shí)際上只有 Redis,但 Redis 是基于內(nèi)存的存儲(chǔ),性能雖然很好,但存在數(shù)據(jù)無(wú)法持久化及成本高等問(wèn)題?;诖?,vivo 基于 TiKV 研發(fā)了自己的 NoSQL 數(shù)據(jù)庫(kù)。它兼容 Redis 協(xié)議,能夠以很低的成本進(jìn)行遷移,可以持久化大規(guī)模存儲(chǔ) TB 級(jí)別,甚至 PB 級(jí)別數(shù)據(jù),還具備高性能、水平擴(kuò)展、高效故障切換、數(shù)據(jù)安全保證一致性等特點(diǎn)。之所以能做到這些,很大程度上是因?yàn)?TiKV 原本就具備了很好的能力,如存儲(chǔ)引擎水平擴(kuò)展能力、高效故障切換能力、數(shù)據(jù)安全保證能力等。目前,這款 NoSQL 數(shù)據(jù)庫(kù)已經(jīng)在 vivo 內(nèi)部的推薦平臺(tái)、內(nèi)部管理平臺(tái)、應(yīng)用中心中應(yīng)用。
通過(guò)引入 TiDB ,vivo 解決了原 MySQL 架構(gòu)無(wú)法應(yīng)對(duì)數(shù)據(jù)量大、流量大等挑戰(zhàn),優(yōu)秀的水平擴(kuò)展能力及高可用特性支撐了 vivo 百億級(jí)別的元數(shù)據(jù)表和日志數(shù)據(jù)表存儲(chǔ),核心業(yè)務(wù)時(shí)延不到 50ms 。同時(shí),TiDB 的實(shí)時(shí) HTAP 能力還幫助 vivo 解決了報(bào)表時(shí)效性問(wèn)題。未來(lái),vivo 還將持續(xù)在內(nèi)部混合云中云化 TiDB 產(chǎn)品,將 TiDB 全生命周期的各個(gè)能力,在 vivo 內(nèi)部云上實(shí)現(xiàn)出來(lái),支持更多的業(yè)務(wù)場(chǎng)景。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。 )