vivo 數據庫與存儲體系產品矩陣

在整個 vivo 云服務體系中,數據庫與存儲處于核心位置,從體系上可以分為兩層,最上面一層是工具產品層,包含數據庫存儲統一管控平臺、數據傳輸服務(支持數據同步、數據訂閱、數據遷移等)、運維白屏化工具等。下面一層是數據庫產品層,這一層又分為三個部分:一部分是 MySQL、 TiDB 等關系型數據庫;一部分是 Redis、ElasticSearch、MongoDB、磁盤 KV 等非關系型數據庫;還有一部分是對象存儲、文件存儲、塊存儲等存儲服務。

vivo 數據庫與存儲運營管理

為了管理這些眾多的數據庫與存儲產品,vivo 打造了一個數據庫與存儲運營管理平臺,主要分為三層架構:

· 最底層是支撐、管理所有數據庫的工具產品,包含數據存儲服務、關系型數據庫、NoSQL 數據庫,以及生態(tài)工具;

· 中間是功能層,包括基礎存儲服務、數據管理服務,以及存儲自治服務;

· 最上面是運營層,包括權限賬單、用戶管理、工單服務等基礎服務。同時還有一些安全相關服務,如數據脫敏、數據加密、權限管控、命令通道、數據審計等一系列功能。

TiDB 在 vivo 的落地實踐

此前,vivo 已經用了很多年關系型數據庫 MySQL?;谠?MySQL 數據庫,vivo 結合集群高可用的管理與數據庫代理的一體化架構,通過域名服務、名字服務進行接入,提供通用的關系型數據庫服務。它主要具有三大核心能力:

· 第一,兼容 MySQL 協議與 SQL 語法;

· 第二, 增強 MySQL 集群管控能力。vivo 引入 MySQL 的時間很早,在 MySQL 的一些集群管控能力上都有自研的能力;

· 第三,安全增強能力,包括密碼管理、數據脫敏、數據加密等能力。

本質上 MySQL 架構還是一個主從架構,并沒有分布式技術引入。針對數據量較大、流量較大的場景,或者分析場景,給業(yè)務帶來了巨大挑戰(zhàn)?;谝陨显颍瑅ivo 在對比了主流分布式數據后后考慮引入分布式關系型數據庫TiDB,作為關系型數據庫產品矩陣的一環(huán),補充整個關系型數據庫的能力。

引入TiDB 幫助 vivo 解決了一些在 MySQL 生態(tài)中無法解決的問題:

· TiDB 可以解決數據量過大、流量過大的問題,以及海量數據分析的場景;

· TiDB 兼容MySQL語法,業(yè)務遷移比較平滑;

· TiDB 支持水平擴展,相比傳統的 MySQL 復雜的分庫分表方式,TiDB 的擴展能力大大降低了運維壓力;

· TiDB 具備數據強一致性、高可用性,可以提供金融級數據安全性。

vivo 研發(fā)團隊具有較強的自研能力,他們將內部所有數據庫統一實現了平臺化管理,這是一種提供高度自助、高度智能化、高可用、低成本的數據存儲使用與管理平臺,包含從數據庫服務的申請、部署、維護、變更、優(yōu)化,以及數據恢復、服務下線等一系列數據庫全生命周期的管理。

在應用 TiDB 后,vivo 研發(fā)團隊同樣也將 TiDB 集成到該平臺中,實現諸如 TiDB 的自動化部署、服務維護、數據變更、數據恢復,包括一些還在持續(xù)建設中的能力,如服務優(yōu)化、服務變更。這些能力與 vivo 的全球化業(yè)務場景息息相關。全球化業(yè)務場景要求更好滿足于本地客戶服務,以及符合本地數據安全相關的一些管理規(guī)范。所以 vivo 的服務都是本地化部署,平臺化的管理方式可以幫助運維、研發(fā)更好地支撐業(yè)務研發(fā)或者業(yè)務變更的效率。

該平臺一方面提升了 vivo 整個數據服務的安全性,如賬號密碼管控、敏感數據加密脫敏、集成的研發(fā)效能等。在業(yè)務開發(fā)團隊需要一個 TiDB 服務的時候,幾分鐘內就能得到一款分布式數據庫進行代碼開發(fā),降低了運維管理成本;運維(DBA)再也不需要登陸服務器執(zhí)行各種涉鑰命令;最后,平臺也大大提升了數據的可用性。vivo 數據庫團隊將一些 TiDB 的備份恢復工具及數據庫的可用性也集成在平臺里。

應用場景

推送業(yè)務基于 TiDB 的海量數據實時 OLAP 方案

vivo 的推送業(yè)務基于 TiDB 實現了一套實時 OLAP 方案。該場景中具有千億級別的數據指標,vivo 希望數據在數據指標寫入時可以實現秒級入庫。同時,該場景還要求以月度為范圍秒級出報表。原方案中使用了其他 OLAP 數據庫方案或 MySQL 方案,在出報表時總會給數據庫集群服務造成很大壓力,指標的計算性、時效性也很差。尤其當面臨海量數據時,查詢與指標變更成本會變得很高。引入 TiDB 后,vivo 可以從實時鏈路里直接把數據秒級寫入,再通過 DM 工具,把關系型數據庫里面維度的數據,以及其他相關聯的數據都同步過來,最終在 TiDB 中進行多表關聯,為最終用戶提供數據服務,如 BI 報表等。在該場景中,TiDB 的高性能、低延時等特性解決了 vivo 數據量大、時效性高等難題。

云服務業(yè)務基于 TiDB 的海量元數據管理方案

vivo 云服務是 vivo 為用戶提供的在手機上進行數據備份、數據恢復同步的一款服務。這款服務用到了對象存儲與文件存儲,同時有大量的元數據需要存儲。原方案使用了 MySQL 分庫分表的方式,但 MySQL 實際上還是一個單集群方案,分庫分表的業(yè)務邏輯需要在業(yè)務層實現,這就需要解決復雜的業(yè)務邏輯問題。同時,分庫分表造成運維十分困難,擴容成本高、擴容耗時間長?;谝陨显?,vivo 基于 TiDB 實現了一套海量元數據管理方案,支撐了 vivo 百億級別的元數據表和日志數據表存儲,核心業(yè)務時延小于 50ms。

基于 TiKV 自研的 NoSQL 數據庫實踐

由于 TiDB 整個產品都采用開源的模式,vivo 并沒有滿足于只作為 TiDB 的使用者,還基于 TiDB 的底層存儲引擎 TiKV 自研了一款 NoSQL 數據庫,希望能夠實現一個高性能的、高穩(wěn)定的多數據模型的分布式數據庫,用以服務內部大數據量存儲場景,降低整體數據庫的運營成本,同時還針對一些 AI 特殊業(yè)務場景的應用進行定制優(yōu)化。

在此之前,vivo 的 NoSQL 數據庫產品矩陣中 KV 產品實際上只有 Redis,但 Redis 是基于內存的存儲,性能雖然很好,但存在數據無法持久化及成本高等問題?;诖?,vivo 基于 TiKV 研發(fā)了自己的 NoSQL 數據庫。它兼容 Redis 協議,能夠以很低的成本進行遷移,可以持久化大規(guī)模存儲 TB 級別,甚至 PB 級別數據,還具備高性能、水平擴展、高效故障切換、數據安全保證一致性等特點。之所以能做到這些,很大程度上是因為 TiKV 原本就具備了很好的能力,如存儲引擎水平擴展能力、高效故障切換能力、數據安全保證能力等。目前,這款 NoSQL 數據庫已經在 vivo 內部的推薦平臺、內部管理平臺、應用中心中應用。

通過引入 TiDB ,vivo 解決了原 MySQL 架構無法應對數據量大、流量大等挑戰(zhàn),優(yōu)秀的水平擴展能力及高可用特性支撐了 vivo 百億級別的元數據表和日志數據表存儲,核心業(yè)務時延不到 50ms 。同時,TiDB 的實時 HTAP 能力還幫助 vivo 解決了報表時效性問題。未來,vivo 還將持續(xù)在內部混合云中云化 TiDB 產品,將 TiDB 全生命周期的各個能力,在 vivo 內部云上實現出來,支持更多的業(yè)務場景。



分享到

xiesc

相關推薦