云原生时代的架构革新,Apache Doris 存算分离如何实现弹性与性能双重提升

导读: 随着云基础设施的成熟,Apache Doris 3.0 正式支持了存算分离全新模式。基于这一架构,能够实现更低成本、极致弹性以及负载隔离。本文将介绍存算分离架构及其优势,并通过导入性能、查询性能、资源成本的测试,直观展现存算分离架构下的性能表现,为读者提供具体场景下的使用参考。

在数据驱动决策的时代,数据规模增长加快、分析需求不断变化。数据从多种渠道(如应用日志、网络交互、移动设备等)源源不断地流入,包含结构化、半结构化、非格式化等多种数据格式,这对数据的存储和分析提出了很高的挑战。与此同时,企业对实时分析、探索性查询的需求激增,要求系统在保证毫秒级响应能力的同时,兼具极致的成本效益与弹性扩展能力。

Apache Doris 诞生于存算一体的分布式时代,是典型的 Shared Nothing 架构:BE 节点上存储与计算紧密耦合、多 BE 节点采用 MPP 分布式计算架构,这种架构带来了高可用、极简部署、横向可扩展以及强大的实时分析性能等一系列核心特色。在实时分析、小规模数据处理等场景中,凭借可预期的稳定低延迟表现,具有不可替代的优势。但在面对大规模数据处理时面临一些挑战,主要体现在:

  • 成本高且弹性不足: 合理平衡存储和计算资源较为困难。存储方面,集群必须足够大以容纳所有数据;因此计算资源的分配既要满足查询请求,又要避免浪费。然而,调整集群规模通常耗时较长,企业往往选择过度配置集群以简化运维操作,这就导致资源浪费和成本增加。
  • 受限的负载隔离: Apache Doris 2.0 开始支持 Workload Group 实现软限隔离,也支持 Resource Group 实现一定程度的硬限隔离,但是这两种方式都无法达到彻底的物理隔离。
  • 运维难度较大: OLAP 系统内置分布式存储系统,不仅需要运维计算节点,还需有效管理存储系统。而存储系统的管理要求非常高,任何不当操作都可能导致数据丢失。

即使如此,在没有稳定且大规模存储支持的情况下,存算一体架构依然是最好的选择。

随着云基础设施的成熟,越来越多的企业都希望 Apache Doris 能更深度地适应公有云、私有云和 K8s 容器平台,以提供更灵活的弹性能力。公有云提供无需预置空间的成熟对象存储和计算资源按需购买,私有云则通过 K8s、MinIO 等技术构建资源平台。云基础设施的成熟,也推动了 Apache Doris 存算分离架构的实现,使更低成本、极致弹性、负载隔离成为可能。

Apache Doris 支持存算分离全新模式

飞轮科技基于 Apache Doris 内核研发全托管企业级云数仓产品(即 SelectDB Cloud)过程中,设计并实现了全新的云原生存算分离架构,并将这一架构的实现贡献至 Apache Doris 社区。Apache Doris 在 3.0 版本中正式支持存算分离这一模式。

SelectDB Cloud 是飞轮科技基于 Apache Doris 内核构建,能够为 Apache Doris 提供原生的存算分离架构云托管服务,并在线下稳定运行近 3 年,获得客户广泛认可。 它支持全球主流云平台,推出开箱即用的 SaaS 部署模式和更符合客户合规需求的 BYOC 部署模式,为企业提供多云一致的使用体验。此外,飞轮科技与阿里云共同打造阿里云一级产品------阿里云瑶池数据库 SelectDB 版,能够为用户提供阿里云上的全托管服务。

目前,SelectDB Cloud 及 阿里云瑶池数据库 SelectDB 版已为点点互动、华瓴科技、名创优品、趣丸、波司登、MiniMax、新东方等数百家知名企业提供服务,帮助这些企业实现查询性能、成本效益、整体性价比的综合提升。

01 存算分离架构

在存算分离模式下,Apache Doris 整体架构由共享存储层、计算层和元数据层三部分构成:

共享存储层: 数据持久化到共享存储层,计算节点可以共享数据,这为计算节点的灵活性提供了基础。成熟稳定的共享存储为系统带来极低的存储成本和极高的数据可靠性,同时,公有云对象存储或者企业内部专业团队运维的共享存储可以大幅降低 Doris 的运维负担。

计算层: 计算层由任意数目的计算组构成,负责执行查询计划,每个查询仅在一个计算组内执行。计算节点无状态,本地配置本地磁盘作为高速缓存以加速查询,共享同一份数据和元数据服务,一个或者多个计算节点组成一个计算组。计算组之间是物理隔离的,可以独立扩缩容,计算节点的本地高速缓存都是隔离的,这样尽可能地保证较好的隔离性。

元数据层: 提供系统的元数据管理服务,包括数据库、表、Schema、rowset 元数据、事务信息等,支持横向扩展。未来 Apache Doris 存算分离模式下的 FE 节点也将实现无状态化,内存占用不再与集群规模相关,仅需极少的内存即可正常运行,消除 FE 内存瓶颈问题。

02 方案设计及思考

对于存算分离架构来说,写入性能和小文件数量是影响架构稳定性和效率的关键因素。而业内常见的存算分离方案,将数据和元数据存储在共享存储中,其事务能力依赖于 FE 单点,通常面临以下挑战:

  • 写入性能差:FE Master 驱动的两阶段提交导致高延迟和低吞吐。
  • 小文件问题:频繁写入元数据生成大量小文件,影响系统稳定性并增加成本。
  • 扩展性差:FE 内存存储元数据,随着 Tablet 数量的增加,内存压力增大,导致写入瓶颈。
  • 数据删除风险:通过差集计算删除数据,依赖超时机制,难以避免写入和删除的冲突,存在误删除的风险。

相比之下,Apache Doris 通过共享元数据服务有效解决了这些问题:

  • 实时写入:元数据服务提供全局一致的视图,支持低延迟和高吞吐的写入。经测试,Doris 存算分离模式在 50 并发下是其他方案的 100 倍;在 500 并发下是其他方案的 11 倍。
  • 小文件控制:数据写入共享存储,元数据写入服务,可有效控制小文件数量。经测试发现,Doris 存算分离模式下的写入文件数仅是业内其它存算分离方案的 1/2。
  • 扩展性提升:未来计划将 FE 的元数据迁移至元数据服务,消除集群规模的限制。
  • 数据删除保障:Doris 采用正向删除,基于全局一致视图,确保写入和删除互斥,避免误删除数据的风险。

03 存算分离整体优势

Apache Doris 存算分离架构,主要提供了提更低成本、极致弹性以及负载隔离这三大优势:

更低成本:与存算一体架构相比,存算分离架构综合成本降低超 90%。

  1. 按需付费:相较于存算一体,无需再预置计算和存储资源,存储可按实际使用付费,计算资源则可以灵活弹性扩展。

  2. 单副本存储:数据仅需在低成本的对象存储中存储一份副本,而不再在高成本的块存储中存储三个副本。热数据则缓存于块存储中,这不仅降低了存储量和硬件资源需求,还显著降低了存储成本(例如,AWS 上的 EBS 价格是 S3 的 2 到 4 倍),同时保证了查询性能。

  3. 资源消耗降低:Compaction 操作所消耗的资源和副本数量成正比,在存算分离模式下只需要处理单一数据副本,资源消耗大幅减少。

极致弹性:得益于无状态的计算节点设计,能够更加灵活地应对不断变化的业务需求,提供高效、弹性的计算资源管理。

  1. 弹性扩缩容:支持灵活调整计算资源,更好应对业务高峰或波动。当系统负载增加时,计算节点可以迅速扩容;而在需求减少时,计算资源又可以灵活缩减,从而避免不必要的资源浪费。

  2. 计算节点按需分配:支持将不同配置的计算节点灵活分配到各计算组中,根据任务需求精确分配资源。例如,高性能计算节点被用于复杂查询或高并发场景,而标准配置节点分配于简单查询或低频请求。

负载隔离:提供高效的资源管理和负载隔离,为不同业务需求提供精细化的计算资源调度。

  1. 业务间负载隔离:针对不同业务需求,可为每业务配置独立计算组,并实现物理隔离。确保各业务计算任务在专用资源上运行,减少相互干扰,保障系统的稳定性和高效性。

  2. 离线负载隔离:对于大规模离线数据处理任务,可将其分配到特定的计算组,使用低成本的资源进行批量数据处理,而不影响实时业务的计算性能。

  3. 读写隔离:可分别为读、写操作创建计算组和用户。写计算组专门处理数据写入(插入、更新等),而读计算组专门处理查询请求,确保在线业务的查询延迟稳定。

性能评测及对比

接下来,我们将从导入、查询、资源成本等多个维度对 Doris 存算分离模式进行对比测试,以更直观地展示其性能表现。

01 导入性能

高并发导入

在相同计算资源下,针对 Doris 存算分离、Doris 存算一体、业内常见存算分离方案,进行两组实时导入性能对比测试:

  • 50 并发:写入 250 个 20000 行的数据文件
  • 500 并发:写入 10000 个 500 行的数据文件

测试结果如下:

  • 在 50 并发下,Doris 存算分离与存算一体的写入性能基本相当,是业内其他存算分离方案的 100 倍
  • 在 500 并发下,虽然 Doris 存算分离相比存算一体写入性能稍有损耗,但比业内其他存算分离方案仍有超 11 倍的性能优势。
批量导入

在批量数据导入场景,分别基于 Doris 存算分离、Doris 存算一体进行导入 TPC-H 1TB 和 TPC-DS 1TB 测试数据集,观察其性能表现。

导入方式: 采用 S3 Load 导入方式,在默认配置下,对多张表的数据进行串行导入,对导入总时间进行对比。

硬件配置如下:

  • 机器数量: 4 台阿里云主机(1 FE,3 BE)
  • CPU:48 核
  • 内存:192G
  • 网络带宽:21Gbps
  • 磁盘:阿里云 ESSD

经测试,在存算一体模式同样采用单副本的情况下,存算分离模式批量数据写入性能较存算一体模式分别提升了 20.05% 和 27.98%。(实际部署中存算一体模式一般会采用三副本,那么存算分离模式的写入性能优势会更加明显。)

02 查询性能

在存算分离模式下,Apache Doris 通过多层缓存机制加速查询,这些缓存层级有效地提升数据访问速度,减少对共享存储的访问,提升查询效率。具体层次如下:

  • Doris Page Cache:使用内存缓存解压后的数据
  • Linux Page Cache:使用内存缓存压缩后的数据
  • 本地磁盘 Cache:缓存压缩数据

硬件配置如下:

  • 机器数量: 4 台阿里云主机(1 FE,3 BE)
  • CPU:48 核
  • 内存:192G
  • 网络带宽:21Gbps
  • 磁盘:阿里云 ESSD

我们对存算一体和存算分离模式进行了不同缓存下的性能测试。以 TPC-DS 1TB 测试集为例,测试结果如下:

  • 完全命中缓存时,即跑两遍取第二遍的完成时间,第一遍把所有数据均加载进缓存中,存算分离与存算一体模式查询性能完全持平;
  • 部分命中缓存时,即测试开始前清空所有缓存,取第一遍的完成时间,测试过程中数据被逐渐加载进缓存中。与存算一体相比,查询性能基本相当,总体性能损耗约 10% ,这一测试场景也与用户实际应用最为接近。
  • 完全未命中缓存时,即在每个 SQL 执行前,清理所有缓存。与存算一体相比,性能损耗约 35%。

03 资源成本

在线业务成本

我们以某企业在线业务为例,对比基于 Doris 存算一体与存算分离模式下的成本差异:

存算一体: 保存于 Doris 中的单副本数据是 100T,三副本后的总数据量是 300T。考虑到避免频繁扩缩容影响业务,磁盘使用率平常保持在 50% 左右。整体的成本如下表所示,每月资源成本支出为 36962.7 美金。

存算分离: 同样的数据规模,使用存算分离模式后,仅需要存储单副本存储在对象存储,热数据在本地磁盘上 cache 一份。如下表所示,每月资源成本支出下降到 22212.65 美金,相较存算一体模式节省了 40% 成本支出。

历史数据成本

以 200TB 的历史数据为例,存算一体和存算分离模式下的资源占用如下表。存算一体的资源成本为 48851.1 美金/月,而存算分离的成本仅为 4502.4 美金/月,成本可以降低 90% 以上。

用户声音

"网易 163 邮箱使用 Apache Doris 替换了原先 Clickhouse、Elasticsearch、Starrocks 等多技术栈。凭借其存算分离架构、湖仓一体、倒排索引能力,支撑了亿级数据实时写入与秒级查询响应,并实现存储成本降低 10 倍、日志检索性能提升 10 倍的成效。" --------- 网易 163 邮箱

"高途教育使用 SelectDB 应用在 BI 报表类高并发低延迟的场景,解决了需要根据数据选择引擎的难题。其存算分离架构和快速扩容的特性,保障了高峰场景数据的秒级产出;多租户的资源隔离方案为成本控制和资源分摊等提供了坚实的基础。期待未来在数据湖和动态扩容方面的进一步建设,加深双方合作。" ---------高途教育

"波司登集团基于阿里云数据库 SelectDB 版作为数仓升级方案,借助阿里云 SelectDB 云原生存算分离架构,实现资源隔离、弹性扩缩容,并取得查询性能提升 2-5 倍、总体成本降低 30% 以上、效率提升 30% 的可观收益。" --------- 波司登集团

"阿里云数据库 SelectDB 版作为 MiniMax 日志存储服务的核心支撑,为在线和离线业务提供了高效、稳定的查询与聚合分析能力。其存算分离的弹性架构,以及对实时物化视图、租户资源隔离及冷热分离等企业级特性的支持,不仅有效解决了日志场景下 PB 级别数据查询的性能瓶颈,还通过智能化的资源调度与存储优化,实现了成本与效率的最佳平衡,为业务的高效运转提供了坚实保障。" --------- MiniMax infra 团队

"阿里云数据库 SelectDB 版为新东方多个核心场景提供了强有力的技术支撑。在湖仓一体实践中,它作为 Paimon 的高性能查询分析引擎,为湖上数据提供了强大的加速分析能力,实现 3-5 倍的性能提升。在半结构化数据处理场景中,依托存算分离架构、Variant 类型高压缩率、倒排索引以及 OSS 低成本存储方案,快速实现海量日志的检索分析,与 Elasticsearc 相比,查询分析性能提升 3-倍,存储成本降低 5 倍,极大优化了资源利用率。" ---------新东方

结束语

以上就是对 Apache Doris 存算分离核心特性及使用方案的完整介绍。存算分离架构的引入,带来更低成本、极致弹性、负载隔离等显著优势。在这一架构的加持下,Doris 凭借其强大的实时数据分析、湖仓融合分析及半结构化数据处理能力,已然成为搭建现代化数据平台的理想选择,能够有效简化当前纷繁复杂的数据分析技术栈。

未来,Apache Doris 将持续增强存算分离模式的功能,包括支持存算分离的快照、时间旅行以及 CCR,提升系统的稳定性和易用性,比如 FE 无状态。为使用者提供更加弹性、高效、稳定、流畅的使用体验。

如果你对存算分离的使用感兴趣、获取一手场景实践,并希望与更多技术专家展开讨论,可持续关注我们、查阅更多优质文章

相关推荐
涛思数据(TDengine)6 分钟前
taosd 写入与查询场景下压缩解压及加密解密的 CPU 占用分析
大数据·数据库·时序数据库·tdengine
DuDuTalk6 分钟前
DuDuTalk接入DeepSeek,重构企业沟通数字化新范式
大数据·人工智能
大数据追光猿14 分钟前
Qwen 模型与 LlamaFactory 结合训练详细步骤教程
大数据·人工智能·深度学习·计算机视觉·语言模型
嗨起飞了17 分钟前
MySQL入门手册
数据库·mysql
阿里云云原生19 分钟前
深度测评国产 AI 程序员,在 QwQ 和满血版 DeepSeek 助力下,哪些能力让你眼前一亮?
云原生
驜鸈37 分钟前
Redis常见命令
数据库·redis·缓存
左灯右行的爱情39 分钟前
Redis- 热key
数据库·redis·缓存
Elastic 中国社区官方博客1 小时前
使用 Elastic-Agent 或 Beats 将 Journald 中的 syslog 和 auth 日志导入 Elastic Stack
大数据·linux·服务器·elasticsearch·搜索引擎·信息可视化·debian
程序员的世界你不懂1 小时前
Mysql配置文件My.cnf(my.ini)配置参数说明
数据库·mysql·百度·新浪微博
ChinaRainbowSea1 小时前
MySQL 索引的数据结构(详细说明)
java·数据结构·数据库·后端·mysql