迈向云原生:理想汽车 OLAP 引擎变革之路

在如今数据驱动的时代,高效的分析引擎对企业至关重要。理想汽车作为智能电动汽车的领军企业,面临着海量数据分析的挑战。本文将展开介绍理想汽车 OLAP 引擎从存算一体向云原生架构演进的变革历程,以及在此过程中面临的挑战,以及是如何通过镜舟数据库存算分离架构解决这些问题的。

一、理想汽车 OLAP 引擎的演进历程

理想汽车目前 OLAP 平台规模已相当可观,拥有 12+集群、1.3 万 CPU 核心,日均处理超过 1000 万查询请求,管理约 300T 的数据量,每天百亿级数据入库,业务发展速度令人瞩目。

理想汽车 OLAP 引擎的演进历程反映了企业数据分析平台的成长与挑战,可分为三个关键阶段:

第一阶段(2022 年):引擎统一

2022 年初,理想汽车面临多种 OLAP 引擎并存的复杂局面,团队同时使用 Impala、StarRocks 以及 TiDB 等多种组件服务 OLAP 场景。多引擎共存的状态也带来了负担:资源成本居高不下,维护工作异常复杂,用户使用体验也大打折扣。

面对这一挑战,团队果断决定统一 OLAP 引擎,将湖仓分析和分析型数据库都交由 StarRocks 承担。这一决策大幅简化了技术栈,也为后续发展奠定了基础。

第二阶段(2023 年):稳定性与易用性提升

随着引擎统一后用户规模扩大,新的问题逐渐显现。由于用户使用处于“裸机”状态,缺乏规范和约束,系统稳定性问题频发。

针对这些问题,团队构建了全方位的稳定性保障体系,包括监控、巡检和告警机制,完善了用户操作规范和 SOP,实施了资源隔离策略。此外,团队还加强了元数据操作与数据导入导出的产品化能力,大幅提升系统易用性。

第三阶段(2024 年):向云原生演进

尽管取得了显著进步,团队仍然意识到存算一体架构存在固有的隔离问题、扩容困难和成本高昂等挑战。2024 年,理想汽车决定向云原生架构演进,采用镜舟数据库作为核心引擎,利用其 Multi-warehouse、存算分离、K8s 等云原生能力重构整个 OLAP 平台,开启了数据分析系统的新篇章。

平台定位:大数据场景下的统一查询、分析引擎

在经历了多个发展阶段后,理想汽车明确将数据平台定位为整个企业大数据生态的统一查询分析引擎。团队在镜舟数据库之上构建了 DQS(统一查询服务),提供鉴权、路由、熔断、限流等核心能力,形成大数据平台的统一出口。

这一架构设计不仅实现了技术上的优化,更重要的是满足了业务需求的多样性。从智能座舱、智能驾驶到企业经营分析,从湖仓分析、实时离线分析到 Ad-hoc 查询和联邦查询,镜舟数据库已经全面覆盖了理想汽车的所有业务场景和分析需求,成为企业数据决策的核心引擎。

二、存算一体架构面临的核心挑战

随着业务规模扩大和分析需求深入,存算一体架构的局限性日益凸显。理想汽车团队在实践中遇到了三大核心挑战。

挑战一:单集群内隔离困难,稳定性难保障

集群

在存算一体架构下,多业务共用集群时常出现相互影响的问题:“我们曾经发生过单个业务异常流量暴增,直接将整个集群 CPU 资源打满,导致其他业务查询排队无法获取资源。”尽管团队尝试使用 Resource Group 实现隔离,但对 CPU 资源的隔离效果远不理想。

此外,内表与外表共存也带来了稳定性风险:外表依赖众多外部组件(如 HiveMetaStore、Alluxio 等),外部组件不稳定可能导致整个集群崩溃。

挑战二:机器扩容不灵活且成本高

扩容

车辆数据自助分析平台是理想汽车的关键业务系统,最初主要分析 APP 层和少量明细数据。随着业务发展,系统需要接入车机埋点和车辆信号数据,单表数据量迅速增长至万亿行级别,存储需求达到 250TB。在存算一体架构下,团队不得不按照存储需求扩容计算资源。

在如此庞大的数据量下,团队发现:99%的查询只关注近一个月的热数据,大量历史数据很少被访问。这不仅导致大量 CPU 和内存资源浪费,更重要的是,随着车辆数量持续增长,这种扩容模式将变得越来越不可持续。

挑战三:弹性伸缩能力弱,资源利用率低

智能驾驶数据分析

在智能驾驶数据分析场景中,维护着一个超过 2000 亿条记录的主键模型表,用于智能驾驶模型训练的数据标签检索。这一场景下的查询有三个特点:查询需要全表扫描并过滤聚合、结果集规模巨大(千万级)、查询性能要求高(5 秒内完成)。

更具挑战的是,查询峰值波动大,但出现概率低。为满足峰值需求,只能按照最高负载配置资源,导致整体资源利用率仅约 20%。

这三大挑战共同指向一个核心问题:传统存算一体架构难以满足大规模 OLAP 系统日益增长的灵活性、隔离性和成本效益需求,亟需对架构进行升级重构。

三、镜舟数据库存算分离架构实践

面对存算一体架构的种种挑战,理想汽车团队在 2024 年做出了战略性决策:采用镜舟数据库作为新一代 OLAP 引擎,利用其云原生能力重构整个数据分析平台,给三个关键领域带来了的突破性进展。

1.Multi-Warehouse,解决隔离问题

镜舟数据库的 Multi-Warehouse 能力为理想汽车提供了全新的隔离方案。团队设计了一套三级隔离策略,彻底解决了之前的稳定性难题。

第一级:内外表集群隔离

团队将湖仓外表查询与内表业务完全分离,避免不稳定的外表查询影响内表业务。

第二级:业务场景隔离

在湖仓集群中,团队将 Ad-hoc 灵活分析与传统 BI 业务分离;在内表集群中,则按业务优先级分离高优与低优业务。这种纵向物理隔离比 Resource Group 更加彻底,确保了高优业务的稳定运行。

第三级:读写负载隔离

团队通过将写入场景(包括 compaction 负载)放到独立 warehouse 执行,配合资源组的横向隔离能力,实现更完善的多维度隔离。

隔离

通过 Warehouse 的纵向隔离加上 Resource Group 的横向隔离,理想汽车实现了非常完善的隔离能力,大幅提升了稳定性。

2.构建全方位稳定性保障体系

在应用存算分离架构之前,团队已经建立了一套完善的稳定性保障体系,涵盖事前、事中、事后全生命周期:

一是事前预防。通过构建通用巡检机制,提前发现潜在风险,通过 DQS 服务实现 SQL 拦截,过滤高风险查询,并配合开发资源预估工具,确保资源合理配置。

二是事中控制。通过多级隔离能力,团队可以在发生故障时有效缩小影响范围,大幅降低连锁故障的风险。

三是事后治理。提供数据治理能力,排除数据或元数据风险,并定期分析历史问题,识别优化点。同时积极向社区提交 PR,修复发现的 bug。

保障体系

通过这套完整的稳定性保障体系,结合 Multi-Warehouse 的隔离能力,理想汽车平台稳定性达到了 99.99%,相比之前有了显著提升。

3.存算分离,解决扩容不灵活问题

理想汽车的车辆数据平台是存算分离架构价值的最佳证明。面对持续增长的车辆数据,团队采用了全新的存储策略:将冷数据存储在对象存储中,仅将近一个月的热数据缓存到本地磁盘。

这个决策背后有着严密的数据支撑,理想汽车大数据团队分析了近半年的查询日志,发现 99%的查询仅访问最近 30 天的数据。通过这种热冷分离的方式,能大幅减少本地存储需求,同时保持查询性能。

团队还在业务层面实施了资源削峰措施,即夜间预先计算结果,降低 CPU 并行度,白天直接查询预计算结果。这种用时间换空间的策略,将夜间预计算的资源需求控制在一个合理水平,为日间高峰期留出足够余量。

通过这些措施,在保持查询性能不下降的前提下,节省了 30%的机器资源,不仅解决了当前问题,更为未来数据量进一步增长提供了可持续的解决方案。

4.镜舟数据库 on K8s 部署实现弹性伸缩

理想汽车大数据团队敏锐地察觉到 OLAP 查询和 Spark 生产任务存在天然的波峰波谷互补特性:白天是 OLAP 查询高峰期而 Spark 任务较少,夜间则相反。

基于此,团队利用两者负载的波峰波谷互补特性,日间镜舟数据库使用资源分析数据,夜间 Spark 使用资源生产数据,在不同时段动态调整镜舟数据库和 Spark 的资源分配,实现真正的资源弹性。

验证结果显示:当本地缓存命中时,查询性能与存算一体架构持平;即使缓存未命中,经过参数优化后,性能下降也控制在可接受范围内。

另外,团队发现单表写入性能实际上优于原有架构,单个 CN/BE 节点导入能力达到 142MB/s。通过这种方案,预计可将整体资源利用率提高 50%。

5.镜舟数据库替代 Spark,进行湖仓 Ad-hoc 加速

除了核心架构问题,理想汽车团队还利用镜舟数据库解决了湖仓 Ad-hoc 查询的效率问题。

传统架构下,这类查询依赖 Linkis+Spark 组合,即使简单查询也需要几十秒时间,用户体验较差。

团队设计了全新的查询加速方案:通过 Flink 实时同步 Metastore 元数据至镜舟数据库,消除元数据获取延迟;利用镜舟数据库的资源常驻能力,避免每次查询的资源申请开销;结合自研 DQS 服务替代 Linkis,简化查询路径并增强稳定性保障。

这套方案将 Ad-Hoc 查询性能提升了 10 倍,不仅提升了数据分析师的工作效率,还为业务决策提供了更加及时的数据支持。

四、未来规划:完全云原生架构

随着镜舟数据库在理想汽车的成功应用,团队已经开始规划下一阶段的架构演进,目标是构建一个完全云原生的 OLAP 平台。

云原生OLAP 平台

完全存算分离架构是团队的首要目标。现阶段的存算分离主要针对计算节点,而元数据服务仍采用存算一体模式。未来计划实现所有集群合并为单一集群,通过共享元数据避免数据孤岛。

团队计划按照场景划分 Warehouse 架构。在单一集群内实现内外表切分,基于业务优先级、负载类型灵活切分 Warehouse,实现内外表混合管理和统一元数据访问。

在资源弹性与成本优化方面,团队计划将低优先级业务部署于 K8s 环境实现弹性伸缩,而高性能需求场景则部署于物理机或云主机。同时,设计支持 Warehouse 间动态负载调整的机制,进一步提升资源利用率。

通过这一系列云原生架构演进,理想汽车与镜舟数据库合作构建了一套兼具稳定性、弹性和成本效益的现代化 OLAP 平台。这一平台不仅有效支撑了从车辆智能分析到企业经营决策的全场景需求,更重要的是为企业在数据驱动转型的道路上奠定了坚实基础,使数据真正成为推动业务创新的核心动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZLMediaKit 源码分析——[3] ZLToolKit 中EventPoller之网络事件处理

系列文章目录 第一篇 基于SRS 的 WebRTC 环境搭建 第二篇 基于SRS 实现RTSP接入与WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 环境搭建 第四篇 WebRTC学习一:获取音频和视频设备 第五篇 WebRTC学习二:WebRTC音视频数据采集 第六篇 WebRTC学习三…

【分布式】分布式限流方案解析

文章目录 固定窗口限流方案​实现方式​优点​缺点​ 滑动窗口限流方案​实现方式​优点​缺点​ 令牌桶限流方案​实现方式​优点​缺点​ 漏斗限流方案​实现方式​优点​缺点​ 在分布式系统蓬勃发展的当下,系统面临的流量挑战日益复杂。为确保系统在高并发场景下…

WPS JS宏编程教程(从基础到进阶)-- 第三部分:JS宏编程语言开发基础

第三部分:JS宏编程语言开发基础 @[TOC](第三部分:JS宏编程语言开发基础)**第三部分:JS宏编程语言开发基础**1. 变量与数据类型**变量声明:三种方式****示例代码****数据类型判断****实战:动态处理单元格类型**2. 运算符全解析**算术运算符****易错点:字符串拼接 vs 数值相…

Python - 爬虫-网页抓取数据-库urllib

urllib库是Python内置的HTTP请求库。无需额外安装,可以直接使用。urllib库包含以下四个模块。 urllib.request - 打开和读取 URL。urllib.error - 包含 urllib.request 抛出的异常。urllib.parse - 解析 URL。urllib.robotparser - 解析 robots.txt 文件。 1、reque…

C++进阶知识复习 1~15

C 进阶总复习 (1~15) 目的1. 介绍下程序从编写到可执行的整个过程2. C中的auto和decltype的区别3. 介绍下多态的实现原理4. C中的new[] 和delete[] 为什么一定要配对使用?5. C中malloc申请的内存 可以使用delete释放嘛6. 什么情况下会出现内存…

输电线路航空标志球:低空飞行的安全路标 / 恒峰智慧科技

在现代社会,随着航空业的快速发展,低空飞行活动日益频繁。为了确保飞行安全,避免飞机与高压电线等障碍物发生碰撞,输电线路航空标志球应运而生。这种装置被广泛应用于高压输电线路上,尤其是超高压和跨江输电线&#xf…

Debian/Ubuntu的networking的`/etc/network/interfaces`配置文件详解

Debian/Ubuntu的networking的/etc/network/interfaces配置文件详解 Debian/Ubuntu 的 /etc/network/interfaces 配置文件详解 在 Debian/Ubuntu 系统中,/etc/network/interfaces 是传统网络接口配置文件,用于定义网络接口的静态/动态配置。以下是逐项解…

OpenCV 图形API(或称G-API)(1)

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 引言 OpenCV 图形API(或称G-API)是一个新的OpenCV模块,旨在使常规图像处理更快且更便携。通过引入一种新的基于图的执行…

Leetcode 3505. Minimum Operations to Make Elements Within K Subarrays Equal

Leetcode 3505. Minimum Operations to Make Elements Within K Subarrays Equal 1. 解题思路2. 代码实现 题目链接:3505. Minimum Operations to Make Elements Within K Subarrays Equal 1. 解题思路 这一题大的思路上不难想到就是一个动态规划的思路。我们分别…

win10之mysql server 8.0.41安装

一 mysql server 下载 官网下载地址页面 https://dev.mysql.com/downloads/mysql/二 免装版使用步骤 1 解压 下载完成后,解压文件夹,如下所示: 2 执行安装命令 D:\soft\mysql\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin>mysqld --install Service successfully in…

第十二届蓝桥杯省赛软件类(cc++组)

第一题&#xff08;空间&#xff09; 解题思路 答案 #include <stdio.h>int main() {// 计算256MB对应的字节数&#xff0c;1MB 1024KB&#xff0c;1KB 1024Blong long total_bytes 256 * 1024 * 1024; // 每个32位二进制整数占4个字节&#xff08;32 / 8 4&#xf…

C++ 新特性 | C++ 11 | 移动语义

文章目录 一、移动语义1、为什么需要移动语义&#xff1f;2、怎么“偷”&#xff1f;——右值引用&#xff08;&&&#xff09;3、如何实现移动语义&#xff1f;——移动构造函数/赋值4、什么时候触发移动&#xff1f;5、移动 vs 拷贝 一、移动语义 1、为什么需要移动语…

wsl下ubuntu安装宝塔

在 WSL (Windows Subsystem for Linux) 下的 Ubuntu 中安装宝塔面板的步骤如下&#xff1a; 1. 确保 WSL 环境正常 已安装 WSL 2 并启用 Ubuntu 发行版&#xff08;推荐 Ubuntu 20.04/22.04&#xff09;。 在 PowerShell 中检查 WSL 版本&#xff1a; wsl --list --verbose 如…

UDP网络通信

UDP网络通信&#xff1a; 步骤1 创建套接字&#xff1a; #include <sys/types.h> #include <sys/socket.h>int socket(int domain, int type, int protocol);参数一 domain&#xff1a; AF_UNIX Local communication unix(7) 本地通信 AF_INET IPv4 Inte…

教你快速理解linux中的NUMA节点探测是干什么用的?

想象一个大城市被划分成几个区&#xff08;比如东区、西区&#xff09;。每个区有自己的超市&#xff08;内存&#xff09;&#xff0c;居民&#xff08;CPU&#xff09;去本区的超市买东西最快&#xff0c;去其他区的超市会慢一些。 NUMA节点探测&#xff0c;就是Linux系统在…

使用 Less 实现 PC 和移动端样式适配

&#x1f310; 使用 Less 实现 PC 和移动端样式适配 —— 以 position 属性为例 在前端开发中&#xff0c;我们常常会遇到这样一个场景&#xff1a; 在 PC 页面中需要某个元素是 position: relative;&#xff0c;但在移动端却希望它是 position: inherit;&#xff0c;以便更灵…

企业战略管理(设计与工程师类)-2-战略规划及管理过程-1-概述

战略管理过程 参考资料&#xff1a; 战略管理 - 清华大学- 蔡临宁公司战略与风险管理 - 华中科技大学 - 贺远琼战略管理 - 北京理工大学 - 杨万荣DeepSeek - 深度思考与联网检索 AFI框架 战略管理最典型的就是采用传统的AFI通用战略管理框架&#xff08;模型&#xff09;&a…

Swoole 的 Hyperf 框架和 Go 的 Gin 框架高并发原理以及技术实现对比分析

Swoole 的 Hyperf 框架和 Go 的 Gin 框架虽然都支持高并发&#xff0c;但它们的实现原理、底层机制和适用场景有显著差异。以下从 高并发原理、技术实现区别、优缺点 三个方面详细分析&#xff1a; 一、高并发实现原理 1. Hyperf (PHP Swoole) Hyperf 的高并发能力基于 Swoo…

【教程】如何利用bbbrisk一步一步实现评分卡

利用bbbrisk一步一步实现评分卡 一、什么是评分卡1.1.什么是评分卡1.2.评分卡有哪些 二、评分卡怎么弄出来的2.1.如何制作评分卡2.2.制作评分卡的流程 三、变量的分箱3.1.数据介绍3.2.变量自动分箱3.3.变量的筛选 四、构建评分卡4.1.评分卡实现代码4.2.评分卡表4.3.阈值表与分数…

AI日报 - 2025年4月2日

&#x1f31f; 今日概览&#xff08;60秒速览&#xff09; ▎&#x1f916; AGI突破 | 研究揭示零RL训练可诱发模型顿悟&#xff0c;Anthropic发布Claude 3.5内部机制研究&#xff0c;简化语言模型推理优化新方法提出。 DeepSeek-R1无需额外指令即可深度推理&#xff1b;Anthro…