文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

字节云数据库未来方向的探索与实践

2024-12-01 19:31

关注

字节云数据库概览

字节云数据库架构分为四层,示意图如下:

DBEngine 层:我们对外会提供完备的数据库,兼容全面的数据库生态,包括 Mysql、PG、ES、Mongo 等;同时我们也支持混合负载,即 HTAP。

DB-Cache 层:这一层会存储两类数据,一类是日志流,另一类是用户数据的缓存。我们在这一层引入一些新的硬件进行加速,为用户提供极致的性能体验。

DB-Store 层:这一层是低成本、跨 AZ、多格式的 DB-Store 层,用于存储用户数据。DB-Store 层是一个分布式的存储平台,它支持插件式的存储格式,比如 veDB 中的行存格式、 ByteHTAP 的行列混合格式;它也支持 Segment 级别的 PITR 特性,提高数据的可用性;它还支持压缩 和 Tail Segment 的特性,来极致降低存储成本。

Store 层:这一层是冷数据存储层,用于存储备份数据或者分层的冷数据。

Severless:目前 veDB 部署在字节内部虚拟机上,同时我们支持在火山引擎上进行容器化部署。我们希望通过当前正在探索的 Serverless ,为用户提供 pay by usage 的计费模式,提供自动 scale up 和 scale down 能力,来充分提高空闲资源的利用率。

Brian:这是数据库的“大脑”,负责提供 AI 能力。

字节云数据库架构的特点是支持三个分离,一是存储与计算的分离,二是日志和数据的分离,三是缓存与计算的分离。

A-Store For veDB 探索与实践背景

业界的很多产品证明了 veDB 云原生数据库架构具有着强大优势,如下:

但是这种存储与计算分离的架构也有一定的劣势:

存储和计算分离后,我们将存储拉到远端的分布式存储系统上,会导致计算和存储之间的延时增加。之前 MySQL 在本地访问 nvme,访问时间大概在微秒级别,但是经过网络延时后,访问时间在毫秒级别。因此我们提出一个设想,是否有一个能和本地 NVME-SSD 同样快且稳定的存储层?新硬件的持久化内存和 RDMA 的出现为上述设想提供了可能。

Persistent Memory

在过去几十年间,计算机系统已经实现了如下金字塔型存储结构。

金字塔上层是易失存储,容量小,延时低;金字塔下层是非易失存储,容量大,延时高。对于 DRAM 及以上的易失存储,CPU 可以通过 Load 和 Store 指令直接访问,响应时间大致在几十纳秒到 100 纳秒级别。对于 SSD 及以下的非易失存储, CPU 就无法直接访问,企业级 SSD 的响应时间可以达到 10 微秒到 100 微秒的级别。由此可以看出 SSD 和 DRAM 之间存在差不多 100 多倍的性能差距,在访问时延上存在一个很大的跳变,但是持久化内存的出现弥补了它们之间的性能鸿沟。

持久化内存(PMEM)位于 DRAM 和 SSD 之间,它具有以下几个核心的特性:

在数据库领域,持久化内存目前主要有两种使用模式,模式一:将其作为一个单机的持久化层,用来加速单个计算节点的性能;模式二:把它拉远做一个分布式的持久化池。作为 veDB 产品的扩展,字节数据库团队在架构上是将 PMEM 作为分布式的共享存储池,用于加速 veDB 的性能。相对于第一种单机模式,拉远的存储池存在一个缺陷:它仍旧需要通过网络来访问,性能低于单机的持久化内存。但是 RDMA 的出现能够有效弥补该缺陷。

RDMA

RDMA 是一种远程直接内存访问的技术。在传统的 TCP/IP 协议中,数据传输时会经过多次的数据拷贝,以及经过 CPU 的内核上下文切换。数据需要经历从用户态到内核态,从内核态再拷贝到网卡。同时,TPC/IP 协议会有一些处理开销,包括 Buffer 管理,协议栈管理,以及发送完之后系统中断引起的开销。RDMA 技术能够帮助计算机直接存取另外一个计算机的内存。

RDMA 具有以下三个核心优势:

基于以上 PMEM 和 RDMA 的新硬件加持,存储系统能够提供极低的延时,非常适用于对性能要求很高、容量无需很大的场景,比如存储系统中的 Cache、WAL 日志、内存数据库等。

A-Store 架构

基于 AEP + RDMA 硬件,数据库团队设计了分布式、高性能存储系统——A-Store。A-Store 对外提供的语义是 Append-only 写接口和随机读,支持 RDMA 单双边的消息。

从图中可以看出,A-store 架构包含三个模块:

最后,A-store 架构具有三个核心特点:一是高性能,硬件直通设计,旁路 Server 软件栈,IO 路径是完全无锁化的设计,也没有拷贝;二是分布式,底层的 Server 层可以扩展;三是高可用,存储在 AEP-Server 的数据,一般都支持多副本部署,目前我们一般部署三副本,保证数据的高可靠性。

A-Store 应用

A-Store 主要有以下两个应用方向:

A-Store For Redo Log 加速

在之前的 veDB 部署中, Redo 日志是通过 Logstore 的组件,将数据写到了远端的 Append only 的分布式系统。当我们引入 A-Store 之后,我们将会替代原来的 Logstore 的组件,将 A-Store 的 SDK 集成到 DB Engine 内部。相比之前的 Logstore 实现,A-Store 具有两个优势:

Redo 日志的写速度,对于写负载是非常重要的。在我们目前的测试中,替换成 A-Store 之后,对于纯写的场景,性能能够提高 20% -30%;线上真实 Workload(write-heave),性能提升 2 倍+。

A-Store For Extend Buffer Pool

原生的 mysql 处理查询都是单线程的处理模型,访问数据时都要先去判断数据是否在 Buffer Pool 中,如果不在,我们需要通过同步的接口把数据从远端存储拉到 Buffer Pool。如果数据没有命中 Buffer Pool,比如数据量很大,Buffer Pool 线上最多开 100 G ,对于用户的请求,请求延时就会增加。为了缓解拉取远端存储的性能下降问题,我们扩展了原生的 Buffer Pool 设计,将 A-Store 作为一个远程分布式的二级缓存,来扩大缓存空间的大小。它的一个主要优势是:延时更低,容量更大。

除此之外,A-Store 还提供 Hot 特性。主节点在故障宕机,进行主备切换之后, 备机可以直接使用远端 AEP Buffer pool 的数据,缩短冷启动时间。我们在纯读、纯写的场景下都进行了测试,性能提高 30% - 70% 左右。

MemTable For veDB

第二个应用方向是提供特性增强。字节未来的发展方向是提供数据库的纵向融合探索,重塑应用缓存和数据库之间的边界。基于 A-store 设计,我们正在开发一款内存数据库引擎 MemTable,对外兼容 SQL 协议。

MemTable 架构

MemTable 架构也采用计算与分离的思路,中间通过 RDMA 进行通讯,它与当前的 veDB 存在几点不同。一是,MemTable 在计算层引入编译执行技术来大幅度提高 SQL 的执行速度;二是存储和事务的处理与 InnoDB 不同:在索引结构上,我们目前采用 ART 索引结构;另外我们采用 MVOCC 并发控制算法进行事务控制;最后我们采用 Record 粒度的数据组织格式。

MemTable for veDB 架构

MemTable 出现之后,veDB 的整体架构如上图所示,MemTable 将作为 MySQL 的插件式存储引擎。同时,它会与 InnoDB 形成互补,InnoDB 可以满足业务容量型需求,MemTable 则可以满足业务高吞吐低延时需求,预计性能可以达到 InnoDB 的 10 倍 +。

ByteHTAP 探索与实践

背景

HTAP 概念早在 2014 年由 Gartner 提出。HTAP 强调以下两个核心理念:

以上是业界提出 HTAP 的背景,在字节跳动,我们希望进行横向融合探索,通过对外提供 everything is SQL 的接口;在内部,不管是 TP 还是 AP,PG 还是 MySQL,通过设置统一的处理层来简化业务应用数据管理体系。

架构

ByteHTAP 架构主要基于以下三个核心目标进行设计:

整体架构

基于以上核心目标,数据库团队设计了如下的 ByteHTAP 整体架构。

目前业界存在很多 HTAP 产品,比如 Memory SQL 系统 、HANA 系统、还有在 TP 系统中扩展 AP 能力、或者在 AP 系统中扩展 TP 能力。2017 年 ACM 发表的一篇关于调研 HTAP 的论文将 HTAP 大致分为了两类,第一类是 Single Engine 系统,这类系统有一个统一的查询处理引擎,比如 Memory SQL 系统。第二类 Separate Engine 系统,这类系统使用分开的查询处理引擎进行 TP 和 AP 的处理。对于 ByteHTAP 而言,它具有以下三个核心特性:

关键技术点

数据库团队分别根据三个核心目标研发了对应的核心技术。针对实时查询,我们提供了以下三个核心技术,达到时延 < 1sec 的目标:

针对强一致性,涉及以下三个核心技术点,实现 SI 隔离级别:

最后针对高性能,涉及以下三个核心技术点,实现更新/复杂查询:

应用

ByteHTAP 可以被应用到以下两个典型应用场景:

来源:字节跳动技术团队内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯