字节跳动数据库的过去、现状与未来

动手点关注 干货不迷路 

日前,字节跳动技术社区 ByteTech 举办的第四期字节跳动技术沙龙圆满落幕,本期沙龙以《字节云数据库架构设计与实战》为主题。在沙龙中,字节跳动基础架构数据库资深工程师张雷,跟大家分享了《字节跳动数据库的过去、现状与未来》,本文根据分享整理而成。

数据库技术一直是信息技术中极其重要的一环,在步入云原生时代后,云基础设施和数据库进一步整合,弥补了传统数据库的痛点,带来了高可扩展性、全面自动化、快速部署、节约成本、管理便捷等优势。

从 2018 到 2021 年,伴随业务和数据的迅猛增长,字节跳动的分布式数据库系统取得了令人振奋的发展。如下图所示,在这 4 年间,公司应用侧容器数量从 5 万个增长到了 750 万个,截至目前已经突破 1000 万。这 1000 万个容器筑成了字节跳动坚实的云原生基础设施,支撑着整个业务体系的发展。

从在线数据角度看,1000 万个容器构成了超过 10 万个微服务,这些微服务在线上运行期间会产生大量数据。在 2020 年,字节跳动的在线数据量级达到 EB 级;到 2021 年 5 月份,字节跳动数据库团队已支撑超过 10 EB 的存储规模。

20e1cc7c096304d4f6d38f195a048991.png

2015 – 2017 年:刀耕火种的石器时代。在这一阶段,字节跳动的业务量级比较小,主要的 App 是今日头条,因此数据库的实例大概在 1~2k 量级,产品主要以开源的 MySQL 和 MyRocks 为主,运维体系主要是依靠人工和脚本。

2018 – 2021 年:标准化、系统化。随着抖音的快速发展,字节的业务规模也迎来快速增长,达到数千套库和数万个数据库实例,原有产品体系已难以解决用户需求,因此我们引入了类似 MongoDB 等开源方案。此外,我们也从 2019 年开始研发云原生分布式数据库产品 veDB 。我们还更新了运维体系,由原来半自动化半人工的状态逐渐走向平台化,大大提升运营效率。

2021 年底至今:融合智能化。当前,字节跳动内部已经开始研发数据库的第三代产品技术体系。在未来几年内,我们预计公司业务规模会上升到数万套库、数十万数据库实例,因此在原有产品体系基础上,我们引入了 HTAP、Serverless DB、MemDB 等产品和技术,在运维体系上,也引入 AI 技术,使得运维更加智能化。

字节跳动数据库的“过去”

第一代数据库系统架构主要分三层,示意图如下:

1961d0bb150c032110b2ee35e8aa7dbe.png

如上图所示,当前字节跳动数据库体系呈现产品多样化、产品智能化两个特征,其中矩阵底层的 Inf-Brain 是数据库管理大脑,主要承担流量预测、熔断预测、智能参数调优等能力。上层各模块则是各细分产品,比如智能运维、分布式中间件、分布式缓存、KV、图等,也有云数据库方向的 veDB、HTAP 相关的一些技术。

veDB主体架构

veDB 自身即一个较大的产品矩阵。它除了提供 MySQL、PG、MongoDB,也在字节跳动内部研发扩展了 Elastic Search 服务,包括自研的、用于处理 TP/AP 相关事务的产品 HTAP。数据库团队在设计上采用了分层式架构,由高性能网络连接上层的数据库和底层的分布式存储引擎平台。

整个 veDB 的架构遵循的基本哲学是分离。

首先是计算和存储的分离。如下图所示,veDB 分为计算层和存储层,其中计算层又被拆分出负责数据库流量调度、接入、鉴权的代理层以及数据库计算层。计算层中是数据库的一些运行实例,它兼容 MySQL、PG 和 MongoDB 等数据库引擎,是无状态的,可以动态地在数据中心里做分布和调度。最下方是存储层,我们把数据库日志、数据库 Page 和对应的处理逻辑都卸载到里面,它支持 HDD、SSD、PM。

其次是日志和数据的分离。我们把数据库的 Wal 和 Page 放到不同介质里,来实现成本和性能之间的平衡。

第三是读写分离。我们最大可以支持一组 15 从的配比,当读流量比较大时,用户可以通过弹性扩充应对读的负载,这在字节跳动内部已经被大规模应用了。

b0271bc7d4143233cb50288b5d5b78c8.png

第一类是容量型实例,比如电商某些订单虽然吞吐量不大,但数据量特别大,远超以往 2T-3T 的单机容量。基于第二代数据库系统,在计算存储分级之后,存储层可以无限扩容,使得用户无需担心数据库,只需聚焦业务开发。

第二类是 QPS 型实例。2021 年春晚,数据库团队支持了某中台的推送业务,目标用户量(设备)高达 10 亿级。最终我们的峰值吞吐量超过了 600 万 QPS,整体数据量也超过了 20TB。活动结束后,因为计算节点都是无状态的,且数据都放在共享存储层,我们轻松完成了节点下线,帮助公司节省了大量计算资源。

第三类是小型实例。字节跳动大部分线上实例都是小型实例,QPS 比较低,数据量也在 GB 级别,这类型的实例可以通过虚拟化、混部、容器等技术降低计算成本。在数据量层面,它们也可以通过共享存储空间降低整体存储成本。

字节跳动数据库的“未来”

未来数据库的情景预测

伴随业务的发展,我们预计在 2022 年以后,字节跳动的数据库规模会达到数万套库、数十万实例。如何更好地支持业务的发展,如何建立管理这数万套库的实力,成了我们下一代技术重点关注的话题——如前所述,在产品方面,数据库团队会持续推出更多产品和引入新技术,使得产品在种类和协议上能出现一定的融合;在运维方面,团队也会引入 AI 技术解决着力解决当前的痛点。

在谈及未来之前,首先我们可以回顾两个问题:

  • 数据库服务产品解决的问题是什么/p>

  • 数据库服务产品面临的新环境是什么/p>

对于问题一,在 2018 年,数据库团队面临的问题是业务需要多种类型的数据,但当时的产品无法提供相应支持;发展至今,现在字节跳动已拥有日渐丰富的数据库产品矩阵,我们的新挑战变成了如何帮助用户选择合适的数据库。

对于问题二,早期因为数据规模不大,数据库团队关注的是怎么保留一些存储、计算资源用于构建运营环境的运维体系;现在我们已经拥有百万级服务器规模,如何利用这些资源、在云环境下构建数据库产品的服务成了我们的新探索方向。

数据库管理领域的发展概览

4f126b42095fe1c53386af9771493ab2.png

第四是分离与整合:当前云数据中心的 building blocks。

总的来讲,数据库也是一种软件,当前我们能不能利用云中心里的硬件和运行时环境使数据库变得更强大、更弹性,也是一个重要方向。

数据库团队在软件、系统层面做了非常多的工作,比如把数据库 Severless 化,把数据库里的状态放到分布式的 Persistent Memory 构建的高性能存储引擎里,在存储层实现自动分层分级。通过这样,我们可以把计算层做得更加弹性。

以下图为例,有三个租户,其中租户 A 需要一些 MySQL 和 PG。我们可以把这些租户的数据库实例运行在容器中,动态地做计算资源调配,根据业务的高峰期和低谷期提供不同大小的数据库实例来实现弹性。在这种大一统运营模式之下,我们就可以摆脱以往独立物理机数量不足的窘境,利用公司百万级服务器实现算力复用。

9ef6b50a0499bb838c55483836cf4171.png

以上内容整理自第四期字节跳动技术沙龙《字节云数据库架构设计与实战》,获取讲师 PPT 和回放视频,请在公众号“字节跳动技术团队”后台回复关键词“0416”

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8598 人正在系统学习中

来源:字节跳动技术团队

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月23日
下一篇 2022年4月23日

相关推荐