如何实现一个百万亿规模的时序数据库,百度智能云 BTS 架构解析和实践分享

本文整理自 2023 年 12 月 16 日,百度智能云数据库总架构师朱洁在《国产数据库共话未来趋势》技术沙龙上的主题分享。


随着互联网和物联网的高速发展,产生了大量的结构化、半结构化数据。在百度集团内部, BTS(Baidu Table Storage) 成为处理这些半结构化数据的关键产品。随着技术的不断发展和业务需求的多样化,BTS 在百度内部经历了从支持单一 Table 能力到支持宽表、时序等多模能力的演进。

BTS 是百度智能云的半结构化存储产品,对内支撑百度核心业务(搜索、Apollo、凤巢、feed、系统监控等),对外提供高性能、低成本的 NoSQL 表格存储服务。

BTS 可用于丰富的场景,比如横向业务场景(分布式存储、结构化、聚合、高性能检索)、纵向行业场景(互联网、广告、feed、物联网、大数据、时序)以及一体化解决方案(大数据分析生态,监控)等,支撑业务创新。并且提供了多种 API、SDK 和可视化的 Web 管理平台供研发人员快速接入。通过 Batch 写、并发读、多级 Cache 加速等方式,打破性能瓶颈。通过热备副本、实时 Failover 和表回收站技术保证数据库高可用。另外,BTS 还提供企业级安全保障,服务可用性高达99.9%,数据可靠性达到了 99.99999999%(10 个 9)。

BTS 的优势积累源于在百度内部的技术沉淀,到现在一共有 12 年的历史,共分为三代。

  • 1.0 版本:在 2011 年,百度设计了第一代分布式 Table 以满足集团内部业务需要。1.0 版本实现了分布式技术的突破,条目数做到百亿级别,满足了海量数据存储的需求。在 2014 年之前,该版本主要为搜索等业务提供定制服务。

  • 2.0 版本:2015 年百度开始拓展商业广告等业务场景,增加了 FreeSchema、存算分离和稀疏表等能力。

  • 3.0 版本:2018 年百度开始推出云上服务,场景进一步拓展,包括 feed 推荐、AI 等场景,条目数增长至百万亿量级。现在已经涵盖了系统监控/自动驾驶等场景。由于 BTS 的单一 Table 能力模式无法满足新场景的需要,因此从 3.0 开始,BTS 新增了时序引擎。同时,目前正在进行多模引擎的重构。

1 BTS 系统架构

下面详细介绍下 BTS 的整体系统架构。如图所示,整个架构分三层:接入层、引擎层和存储层。

存储层负责数据块的管理,整体采用了存算分离架构,实现了模块化的设计。数据均下沉存储于存储层,提供多种存储介质和压缩格式,为客户提供数据生命周期管理的能力。

引擎层提供了核心数据处理和管理能力,根据多维度策略对各模块做智能化调度。由于引擎层的数据都是无状态的,所以各个子功能都能够做到模块化,彼此之间解耦并可独立伸缩。另外,引擎层专门设计了智能化调度模块,可针对不同切片负载,做到自动化切片和合并。目前,我们在做基于反馈的自动调动,比如根据数据预测业务波动的情况,进行提前自动化调度。

最后,上层接入层支撑了丰富的接口和生态的能力。目前 BTS 支持 HBase, Influx 接口,更多接口也在逐步完善中。

2 BTS 核心技术架构设计

NoSQL 伴随着互联网业务发展而来,生来就是为了解决关系型数据库在垂直场景的不足。因此对于 NoSQL 数据库来说,高性能、低成本、高可用、高扩展是其核心能力。

2.1 单机引擎读写路径

接下来会重点介绍 BTS 是如何实现这些能力的。在这之前先介绍下单机引擎的读写路径,这是性能优化和高可用实现的前提。

首先是写路径,客户端写入数据后,数据写入 Redo-Log 并写进内存表中,导出数据压缩后以单元数据模式存储,可以支持多级压缩。详细的路径是:客户端写->数据写 Redo-Log->进入内存表-> dump 数据。压缩后以单元数据模式存储,支持多级压缩。

读路径则和写路径刚好相反:客户端读->优先在数据块缓存查询(如有)->如未命中,下沉到单元数据中查询->将数据返回客户端。读取数据的时候,核心能力是利用数据缓存加上内存里面的数据进行合并,加快读数据。

2.2 高性能优化和低成本管理

我们首先看下如何实现 NoSQL 数据库中最关键的性能和成本。

在性能方面我们有几个关键的优化,分别是:

  • 通过 GroupCommit 将小块写合并处理,从而大幅度提升写吞吐。这在 HDD 介质上有明显的提升效果。

  • 多种 Compaction 策略减少 I/O 放大。

  • 写数据是把 I/O 合并,而读取数据的逻辑相反,把较大的 I/O 拆成小的 I/O 提供并发能力,通过「并发 I/O + 预读」提升读吞吐。

  • 支持可配置缓存(Cache),提供内存、SSD 等多级缓存的能力。

在成本方面,BTS 底层支持多种压缩类型,包括三副本、Snappy、EC 等多种方式压缩节省空间。另外,BTS 还支持容量型和性能型切换,未来将提供同一张表自动降冷的能力。

2.3 高可用架构设计

接下来介绍 BTS 的高可用实现方法。

我们都知道数据的可靠性是存储层来保证的。在高可用上, BTS 有一整套的 HA 框架。这套框架包含控制节点和工作节点两部分,它们都支持高可用冗余。其中,工作节点之间是热备,数据通过 Redo-Log 进行同步。控制节点负责高可用的切换。主节点如果出现故障,可以进行快速切换,不可用时间控制在百毫秒内,切换时间控制在 RPC 调度时间之内。

依赖这个架构,可以实现快速 Failover,服务单元 MTTR 从秒级下降至百毫秒以内。另外,在系统升级的过程中,工作节点会主动切主,这个场景下业务无感知。

BTS 具备了完善的高可用的能力,比如多层次的容错和调度设计、多层弹性多租户隔离机制、端到端数据校验和实时监控和完善的运维。通过内核高可用框架和企业级能力来整体保证高可用的能力。

2.4 核心技术总结

最后,总结下 BTS 关键的核心技术:

第一点是支持缓存加速器。可以配置缓存,并且支持多层级特性,包含内存和 SSD 。支持对指定的表进行多层级加速,可以有效地提升热数据的读取速度,满足多重场景的诉求。

第二点是多活架构。整体架构为热备多活,支持自动化故障切换,可以实现毫秒级故障切换,主动升级业务无感,适合对高可用有要求的业务。

第三点是存储层支持多级数据压缩。该方式减少了无用数据的 I/O 消耗,支持直接对压缩后的数据进行操作,可以提升读性能以及节省存储空间。

最后一点是正在进行内部测试的 key value 分离存储功能。通过分离存储可以做到单独压缩,查询的时候减少整行存取的 I/O 消耗,读写性能提升 50%。

3 使用场景

在介绍了 BTS 技术架构之后,我们进一步探讨下 BTS 架构在实际使用场景中的应用。BTS 目前支持超万亿的日均访问量,场景上覆盖了宽表、时序、大数据的处理和分析场景,覆盖了物联网、AI、feed 流、广告、健康、搜索、web 应用、自动驾驶等诸多方向。

3.1 自动驾驶场景

Apollo 无人车自动训练是其中一个重要的场景。在此场景下,需要进行模型训练、仿真,按需获取多维度环境数据。这种类型的数具备如下特征:

  • 车端数据具有多源,包括位置数据、雷达数据、影像数据、红外数据等。

  • 单车单天 TB 级别,海量数据导致存储成本压力大。

  • 对数据实时性要求高。

从这些特征中我们可以看出,自动驾驶场景最大的特点就是吞吐高、数据量大,同时具备大数据和时序特征的场景。在这种海量时序数据场景中,性能和成本是其中的关键。

在性能上,关键的解决办法就是按车和传感器进行区分,将时序写入打散,从而解决写入瓶颈。底层存储单元支持按大小,负载自动分裂和合并来解决数据热点问题。

在成本上,BTS 支持数据转冷、按季度分表、转表、数据降冷等,从而实现高效的存储。

通过 BTS 综合解决方案,实现了百 PB 数据低成本的存储,百 GB 的吞吐能力,支持业务精细化仿真,按需读取维度数据的能力。

3.2 系统监控场景

和自动驾驶场景不同,监控数据天然是打散的。监控场景中的物理服务器、虚拟机、容器等,均需要各个维度的监控以提升业务可视化程度。但是监控数据的小 value 很多,这导致读写和 Compaction 消耗很高。这也是监控业务相比自动驾驶业务不同的地方。

监控业务最大的痛点是离线流量和在线流量混合。离线流量需要分析全量数据,然后输出业务报表,对系统消耗很高。在线流量主要是实时监控、实时报警,要求数据能实时处理,不能阻塞。

BTS 通过支持在离线分级管理的方式,用不同的访问标识区分在离线任务。离线任务会切成很小块,一个小块占用不多的时间,让高优在线任务能够随时插入进来。在线流量低时,离线流量可以充分把资源利用起来,当在线流量起来后,离线又能够快速让出资源,不阻塞在线任务。

另外一点是监控对成本要求高的同时,对性能的要求也很高。所以利用监控业务读取最新数据的特征,通过多种缓存策略,让热数据尽量保持在高速缓存以保证高性能,冷数据放在 HDD 上,从而实现了成本的降低。

通过这些整体方案,已经可以实现缓存命中率超过 80%,在兼顾成本的同时又具备高性能。

通过以上方案,在百度集团内部的系统监控场景下,最终达到了业务成本下降 50% 以上、可支持每天十万亿级监控点采集、离线流量对在线流量 0 影响,实现监控 0 丢点率的效果。

4 未来展望

目前 BTS 在支持了宽表和时序的基础上,将进一步发展支持文档、搜索的多模能力,给客户提供跨模态统一分析和计算的能力,即支持客户通过一个任务即可统一分析多个模态数据。

前面介绍了关键产品 BTS,最后简单回顾一下百度智能云产品矩阵。百度智能云数据库包括 RDS、NoSQL、云原生数据库,OLAP 等产品。相比业界其他云厂商,百度智能云数据库有两个显著特点:

  • 百度智能云数据库可以做到一套架构,云上云下客户享受同等的产品能力。

  • 支持国内最全的产品形态,包括公有云,专有云 ABC Stack,边缘计算节点 BEC,本地计算集群 LCC 等多种形态,可以服务各类诉求的客户。

以上是今天分享的全部内容。

------------------END------------------

推荐阅读

千万级高性能长连接Go服务架构实践

百度搜索Push个性化:新的突破

数据交付变革:研发到产运自助化的转型之路

百度搜索exgraph图执行引擎设计与实践

百度搜索&金融:构建高时效、高可用的分布式数据传输系统

相关推荐
Channing Lewis1 小时前
sql server如何创建表导入excel的数据
数据库·oracle·excel
秃头摸鱼侠1 小时前
MySQL安装与配置
数据库·mysql·adb
UGOTNOSHOT1 小时前
每日八股文6.3
数据库·sql
行云流水行云流水2 小时前
数据库、数据仓库、数据中台、数据湖相关概念
数据库·数据仓库
John Song2 小时前
Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
数据库·redis·哈希算法
IvanCodes2 小时前
七、Sqoop Job:简化与自动化数据迁移任务及免密执行
大数据·数据库·hadoop·sqoop
tonexuan2 小时前
MySQL 8.0 绿色版安装和配置过程
数据库·mysql
JohnYan2 小时前
工作笔记- 记一次MySQL数据移植表空间错误排除
数据库·后端·mysql
我最厉害。,。3 小时前
Windows权限提升篇&数据库篇&MYSQL&MSSQL&ORACLE&自动化项目
数据库·mysql·sqlserver
远方16093 小时前
20-Oracle 23 ai free Database Sharding-特性验证
数据库·人工智能·oracle