共计 3211 个字符,预计需要花费 9 分钟才能阅读完成。
vivo 是一家全球性的挪动互联网智能终端公司,品牌产品包含智能手机、平板电脑、智能手表等,截至 2022 年 8 月,已进驻 60 多个国家和地区,寰球用户笼罩 4 亿多人。
vivo 为用户提供了在手机上备份联系人、短信、便签、书签等数据的能力,底层存储采纳 MySQL 数据库进行数据存储。 随着 vivo 业务倒退,用户量增长迅速,存储在云端的数据量越来越大,海量数据给后端存储和数据库带来了微小的挑战。云服务业务最大的痛点,就是如何解决用户海量数据的存储问题 。
本文介绍了 vivo 的数据库和存储系统,以及如何应用分布式数据库 TiDB 解决海量数据挑战。 具体介绍了 vivo 采纳 TiDB 过程中的实在体验,包含海量数据实时 OLAP 计划、云服务业务中的元数据管理计划,和基于自研的 NoSQL 数据库 TiKV 的实际 。分享了如何解决海量数据存储和治理的问题,以及进步业务效率和用户体验的实践经验。
vivo 数据库与存储体系
<center>vivo 数据库与存储体系产品矩阵 </center>
在整个 vivo 云服务体系中,数据库与存储处于外围地位,从体系上能够分为两层,最下面一层是工具产品层,蕴含数据库存储对立管控平台、数据传输服务(反对数据同步、数据订阅、数据迁徙等)、运维白屏化工具等。上面一层是数据库产品层,这一层又分为三个局部:一部分是 MySQL、TiDB 等关系型数据库;一部分是 Redis、ElasticSearch、MongoDB、磁盘 KV 等非关系型数据库;还有一部分是对象存储、文件存储、块存储等存储服务。
<center>vivo 数据库与存储经营治理 </center>
为了治理这些泛滥的数据库与存储产品,vivo 打造了一个数据库与存储经营治理平台,次要分为三层架构:
- 最底层是撑持、治理所有数据库的工具产品,蕴含数据存储服务、关系型数据库、NoSQL 数据库,以及生态工具;
- 两头是性能层,包含根底存储服务、数据管理服务,以及存储自治服务;
- 最下面是经营层,包含权限账单、用户治理、工单服务等根底服务。同时还有一些平安相干服务,如数据脱敏、数据加密、权限管控、命令通道、数据审计等一系列性能。
TiDB 在 vivo 的落地实际
此前,vivo 曾经用了很多年关系型数据库 MySQL。基于原生的 MySQL 数据库,vivo 联合集群高可用的治理与数据库代理的一体化架构,通过域名服务、名字服务进行接入,提供通用的关系型数据库服务。它次要具备三大外围能力:
- 第一,兼容 MySQL 协定与 SQL 语法;
- 第二,加强 MySQL 集群管控能力。vivo 引入 MySQL 的工夫很早,在 MySQL 的一些集群管控能力上都有自研的能力;
- 第三,平安加强能力,包含明码治理、数据脱敏、数据加密等能力。
- 实质上 MySQL 架构还是一个主从架构,并没有分布式技术引入。针对数据量较大、流量较大的场景,或者剖析场景,给业务带来了微小挑战。基于以上起因,vivo 在比照了支流分布式数据后后思考引入分布式关系型数据库 TiDB,作为关系型数据库产品矩阵的一环,补充整个关系型数据库的能力。
引入 TiDB 帮忙 vivo 解决了一些在 MySQL 生态中无奈解决的问题:
- TiDB 能够解决数据量过大、流量过大的问题,以及海量数据分析的场景;
- TiDB 兼容 MySQL 语法,业务迁徙比拟平滑;
- TiDB 反对程度扩大,相比传统的 MySQL 简单的分库分表形式,TiDB 的扩大能力大大降低了运维压力;
- TiDB 具备数据强一致性、高可用性,能够提供金融级数据安全性。
- vivo 研发团队具备较强的自研能力,他们将外部所有数据库对立实现了平台化治理,这是一种提供高度自助、高度智能化、高可用、低成本的数据存储应用与治理平台,蕴含从数据库服务的申请、部署、保护、变更、优化,以及数据恢复、服务下线等一系列数据库全生命周期的治理。
在利用 TiDB 后,vivo 研发团队同样也将 TiDB 集成到该平台中,实现诸如 TiDB 的自动化部署、服务保护、数据变更、数据恢复,包含一些还在继续建设中的能力,如服务优化、服务变更。这些能力与 vivo 的全球化业务场景非亲非故。全球化业务场景要求更好满足于本地客户服务,以及合乎本地数据安全相干的一些治理标准。所以 vivo 的服务都是本地化部署,平台化的治理形式能够帮忙运维、研发更好地撑持业务研发或者业务变更的效率。
该平台一方面晋升了 vivo 整个数据服务的安全性,如账号密码管控、敏感数据加密脱敏、集成的研发效力等。在业务开发团队须要一个 TiDB 服务的时候,几分钟内就能失去一款分布式数据库进行代码开发,升高了运维治理老本;运维(DBA)再也不须要登陆服务器执行各种涉钥命令;最初,平台也大大晋升了数据的可用性。vivo 数据库团队将一些 TiDB 的备份复原工具及数据库的可用性也集成在平台里。
利用场景
推送业务基于 TiDB 的海量数据实时 OLAP 计划
vivo 的推送业务基于 TiDB 实现了一套实时 OLAP 计划。该场景中具备千亿级别的数据指标,vivo 心愿数据在数据指标写入时能够实现秒级入库。同时,该场景还要求以月度为范畴秒级出报表。原计划中应用了其余 OLAP 数据库计划或 MySQL 计划,在出报表时总会给数据库集群服务造成很大压力,指标的计算性、时效性也很差。尤其当面临海量数据时,查问与指标变更老本会变得很高。引入 TiDB 后,vivo 能够从实时链路里间接把数据秒级写入,再通过 DM 工具,把关系型数据库外面维度的数据,以及其余相关联的数据都同步过去,最终在 TiDB 中进行多表关联,为最终用户提供数据服务,如 BI 报表等。在该场景中,TiDB 的高性能、低延时等个性解决了 vivo 数据量大、时效性低等难题。
云服务业务基于 TiDB 的海量元数据管理计划
vivo 云服务是 vivo 为用户提供的在手机上进行数据备份、数据恢复同步的一款服务。这款服务用到了对象存储与文件存储,同时有大量的元数据须要存储。原计划应用了 MySQL 分库分表的形式,但 MySQL 实际上还是一个单集群计划,分库分表的业务逻辑须要在业务层实现,这就须要解决简单的业务逻辑问题。同时,分库分表造成运维十分困难,扩容老本高、扩容耗时间长。基于以上起因,vivo 基于 TiDB 实现了一套海量元数据管理计划,撑持了 vivo 百亿级别的元数据表和日志数据表存储,外围业务时延小于 50ms。
基于 TiKV 自研的 NoSQL 数据库实际
因为 TiDB 整个产品都采纳开源的模式,vivo 并没有满足于只作为 TiDB 的使用者,还基于 TiDB 的底层存储引擎 TiKV 自研了一款 NoSQL 数据库,心愿可能实现一个高性能的、高稳固的多数据模型的分布式数据库,用以服务外部大数据量存储场景,升高整体数据库的经营老本,同时还针对一些 AI 非凡业务场景的利用进行定制优化。
在此之前,vivo 的 NoSQL 数据库产品矩阵中 KV 产品实际上只有 Redis,但 Redis 是基于内存的存储,性能尽管很好,但存在数据无奈长久化及老本低等问题。基于此,vivo 基于 TiKV 研发了本人的 NoSQL 数据库。它兼容 Redis 协定,可能以很低的老本进行迁徙,能够长久化大规模存储 TB 级别,甚至 PB 级别数据,还具备高性能、程度扩大、高效故障切换、数据安全保障一致性等特点。之所以能做到这些,很大水平上是因为 TiKV 本来就具备了很好的能力,如存储引擎程度扩大能力、高效故障切换能力、数据安全保障能力等。目前,这款 NoSQL 数据库曾经在 vivo 外部的举荐平台、外部治理平台、利用核心中利用。
通过引入 TiDB,vivo 解决了原 MySQL 架构无奈应答数据量大、流量大等挑战,优良的程度扩大能力及高可用个性撑持了 vivo 百亿级别的元数据表和日志数据表存储,外围业务时延不到 50ms。同时,TiDB 的实时 HTAP 能力还帮忙 vivo 解决了报表时效性问题。将来,vivo 还将继续在外部混合云中云化 TiDB 产品,将 TiDB 全生命周期的各个能力,在 vivo 外部云上实现进去,反对更多的业务场景。