关于tidb:vivo-x-TiDB丨解决云服务海量数据挑战

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 外部云上实现进去,反对更多的业务场景。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理