[Flink/Hologres/汽车] 骋在数据洪流上:Flink+Hologres驱动零跑科技实时计算的应用与实践 [转]

news/2025/11/4 0:01:37/文章来源:https://www.cnblogs.com/johnnyzen/p/19188570

0 序

  • 本文根据 2025 云栖大会演讲整理而成

演讲信息如下:
演讲人: 聂清 零跑汽车大数据高级专家
零跑科技的快速发展与数据挑战
https://zhuanlan.zhihu.com/p/1966879670852093187

image

  • 零跑科技成立于2015年12月,总部位于浙江杭州,是国内造车新势力中唯一具备全域自研自造能力垂直整合度最高的智能电动车企业。业务涵盖整车设计、研发制造、智能驾驶等领域,始终致力于为用户创造价值。

  • 特别值得一提的是,就在演讲前一天,零跑迎来了第100万台量产车的下线。从50万台到100万台,零跑仅用343天时间,标志着零跑汽车已经迈入规模化发展的新阶段。这种跨越式的增长速度在行业内实属罕见。

  • 随着近几年零跑销量逐年翻倍增长及车型矩阵持续丰富,业务端对数据的需求也发生了本质性变化。

过去,企业提供的基本都是T+1离线数据,这种延迟在当时的业务场景下尚可满足需求。
但如今,分钟级甚至秒级的数据已经成为业务刚需
正是业务对数据实效性的强烈需求,推动了零跑科技实时计算的构建与落地。

  • 智能网联汽车的发展中,实时计算至关重要。

随着大数据、物联网和人工智能等技术的飞速发展,实时计算在数据处理领域的重要性日益凸显。
它不仅能够提高数据处理效率、支持实时决策,还能优化业务流程提升客户体验,推动创新应用的持续发展。

1 为什么选择Flink?

  • Flink出现之前,业界已经有两款主流的流处理框架

最早是Storm,由Twitter在2011年开源。
StormACK机制很好地解决了"至少一次"语义的问题,确保了数据不丢失。
然而,大多数业务场景更需要"精确一次性"语义来保证数据的一致性。

  • 随后出现的Spark Streaming通过微批模式实现了精确一次性语义,但存在天然缺陷:

本质上仍是将流数据细分成微批进行计算,导致最低延迟只能达到分钟级别,无法满足更高实时性要求的场景。

  • 直到2014Flink的出现,才真正解决了在大数据应用场景下【强一致性】与【低延时】之间的矛盾。

Flink分布式流处理框架,旨在提供高吞吐、低延迟、高性能的流数据处理能力。
它统一了流处理批处理,设计之初就认为"批是流的特例",整个系统采用Native Streaming设计,每条数据都能够触发计算。

image

图:Flink技术原理与优势

  • Flink具有四大核心优势:低延迟与高吞吐的完美结合、精确一次性语义的可靠保障、强大的状态管理能力、灵活的时间语义与窗口机制。

正是基于这些优秀特性,零跑科技最终选择Flink作为实时计算的核心引擎。

2 零跑科技大数据平台架构

image

  • 零跑汽车的大数据平台总体架构自下而上分为五层:

  • 最底层是数据源层,主要覆盖三类核心数据:

  • 业务系统类的关系型数据,如ERP、MES等多达几十种业务系统;
  • IoT设备上的数据,以车机信号类传感器数据为主,这类数据多呈现为半结构化形式;
  • 文件、视频、图片等非结构化数据。
  • 第二层是基础设施层,包括计算、存储及开发算法平台,为上层提供强大的资源支撑。
  • 平台采用OSS、MaxCompute、Hologres、Hbase、Doris、HDFS、Paimon等多种存储方案,计算层包括MaxCompute、Hologres、Flink、Hive、Spark等组件,还配备GPU/CPU算力资源,以及DataWorks和AiWorks等开发平台。
  • 第三层是数据资产层,由数据仓库分层建模算法训练模型推理组成,为上层的【数据服务】及【数据应用】提供数据支撑。

数据仓库采用标准的分层架构,包括数据贴源层、数据清洗层、公共维度层和数据集市层,同时建设了模型广场、模型训练和模型推理能力。

  • 第四层是数据服务层,提供BI报表、即席查询、数据服务API等能力,同时具备完善的数据管理体系,包括用户管理、元数据管理、数据质量管理、任务调度管理和指标监控等功能。

  • 最上层是数据应用层,包括观远BI、APP应用、营销大屏、电池故障报警、质量故障检测等多种应用场景,真正实现了数据价值的释放。

3 车机信号实时分析的挑战与实践

image

车机信号实时分析是零跑科技实时计算应用的核心场景之一。

  • 车辆启动后,CAN总线会产生大量传感器数据。
  • 这些数据通过T-Box传输到云端Kafka,经过Flink进行解析清洗,实时场景数据写入实时数仓Hologres离线场景数据写入MaxCompute进行分层加工,最终供各类实时应用使用。

在数据流转过程中,面临着多重挑战。数据量巨大,目前已达PB级规模;大多数应用场景下,需要对信号数据进行实时切片处理;信号数量众多,高端车型的信号数远超8000个;需求应用场景繁多;数据结构极为复杂。

这些挑战对实时计算平台提出了极高要求,必须在保证数据准确性的前提下,实现高吞吐、低延迟的数据处理能力。

4 车辆故障诊断的实时应用

image

  • 车辆故障诊断是典型的实时计算应用场景
  • FlinkHologres高吞吐低延迟的性能特性,完美支撑了该场景下的三大核心任务。
  • 实时故障解析是第一项任务。

Flink将计算后的数据写入Hologres,并对故障进行状态更新。这里充分利用了Hologres主键模型的UPSERT能力,能够高效进行数据更新操作。

  • 质量规则监控是第二项任务。

业务层将质量标准配置成规则,Flink通过Flink CDC读取这些规则,关联车辆信号数据,最终写入Hologres,支撑质量问题的追溯分析。

  • AI智能预测预警是第三项任务。

Flink实时解析信号并及时计算特征,输入AI模型预测故障发生概率。针对高风险车辆的异常数据,系统主动触发服务维护,形成从监测到预测再到用户服务的完整业务循环。

  • 在该场景中,Hologres的重要特性凸显出来——实时写入即可见

相比之下,ClickHouse、Doris等OLAP型数据库数据可见性更多依赖于Flinkcheckpoint时长。
在生产环境中,checkpoint一般设置为几十秒甚至一两分钟级别,因为过短的checkpoint时长会影响计算性能。
Hologres完全不受此限制,数据写入后立即可见,这对于实时性要求极高的故障诊断场景至关重要。

5 基于Flink的一体化实时计算平台

image

  • 在构建一体化实时计算平台之前,零跑科技的常规开发运维情况是:Flink作业部署在KubernetesYarn上,由开发人员或运维人员通过命令行创建Flink Session,或直接通过命令行提交JAR作业进行部署。

这种方式产生了一系列问题。

  • 部署在Yarn上的部分作业中,离线任务实时任务混部,导致在高峰期离线任务会挤占实时任务资源,造成状态丢失,最终导致数据不一致。
  • 此外还存在作业种类繁多、研发人员众多导致管控困难监控分散等问题。
  • 基于阿里云的Flink一体化实时计算平台后,这些问题得到了明显改善。
  • 平台提供统一界面,支撑Flink SQL及JAR作业的提交,具备可视化的资源配置及弹性扩缩容能力。
  • 一致性的状态管理保证了数据的一致性。
  • 特别值得一提的是,Flink全链路的监控指标非常完善,能够进行实时告警,同时简化了开发人员的操作流程。
  • 总结来看,有了这个平台后,零跑科技实现了从分散管控集中管控的转变,显著提升了研发效率及系统稳定性。

6 信号业务实时离线一体化实践

image

  • 在正式落地该场景之前,零跑科技在去年的POC阶段进行了大量性能测试,主要涵盖三大类任务。
  • Flink的JAR作业将信号解析后写入Kafka,供后续分层应用计算使用;
  • Flink将信号变宽表写入Hologres;对信号进行切片处理后写入MaxCompute的大宽表。
  • 此外还包括复杂场景的测试,如MaxCompute里的复杂计算、多表join,以及Hologres的并发性能测试等。

image

  • 经过POC验证,性能提升效果非常显著。
  • Flink作业解析信号写入Kafka,相比开源产品性能提升约60%。

该环节主要为CPU解析过程,所以在三种作业中提升相对最小。

  • Flink作业写入MaxCompute的大宽表,对比Hive性能提升200%。
  • Flink JAR作业写入Hologres,对比ClickHouse性能提升高达400%。

image

  • 经过这一系列试验,总结出三大优势
  • 首先是降本增效,通过提升作业性能、提高存储压缩比(压缩率提升五倍)及合理的定价策略,整体作业平均提升3倍以上,部分任务提升5倍以上,有效降低了存储成本。
  • 其次是架构升级。将开源Flink替换为云上全托管Flink,底层采用Flash向量化引擎进一步提升性能。ClickHouse替换为Hologres后,在分布式计算、多表join及高QPS场景下优势明显,能够支撑更多应用场景。Hive与Spark替换为MaxCompute后,6000字段以上的大宽表查询及写入性能实现翻倍提升。
  • 第三是运维简化。云托管产品无需专门的运维人员,且具备自动调优能力,非常适合车机信号波峰波谷场景,能够明显节约资源。DataWorks提供开发、运维、治理全生命周期管理能力,极大提高了运维管控效率,同时实现了租户隔离、精细化访问控制等安全能力。

7 未来规划与展望

  • 目前,基于Flink的实时计算体系已基本覆盖零跑科技的核心业务场景

但面向未来,零跑科技还将在两个方向继续发力。

image

  • Flink与数据湖的深度融合是第一个方向。

该方面已开始预研,部分小场景已基于Flink加数据湖实现了流批一体。
未来希望扩大应用范围,通过Flink与Paimon的深度集成,实现统一元数据管理、统一存储及统一查询引擎,真正做到实时写入也能全量读取的流批一体数仓架构,最终实现降本增效的目标。

  • Flink与AI的深度融合是第二个方向,主要包括三个方面。
  • 提升决策时效性,通过Flink实时处理流数据,为AI模型提供最新特征,将决策时效性从小时级提升至秒级。
  • 探索Flink Agents场景,尝试Flink与多模态数据管理、Agent、模型预训练场景的落地,同时提供多种研发范式,降低研发门槛。
  • 构建实时特征计算平台,结合数据流优化、计算优化、状态管理、资源调度等多方面技术,针对长窗口特征计算进行进一步优化,提升实时特征计算的效率。

8 总结

  • 零跑科技的实时计算实践始终遵循原则——从业务刚需出发,以技术为支撑,最终回归业务价值

这也是零跑科技能够在短短几年内实现从0到100万台量产车跨越的重要原因之一。

  • 通过FlinkHologres的深度应用,零跑科技不仅解决了智能网联汽车场景下海量数据的实时处理难题,更为整个行业提供了宝贵的实践经验。

在数据洪流中驰骋,零跑科技正在用【技术创新】驱动智能汽车产业的【数字化转型】。

X 参考文献

  • 云栖实录|驰骋在数据洪流上:Flink+Hologres驱动零跑科技实时计算的应用与实践 - Zhihu

https://www.aliyun.com/solution/tech-solution/flink-hologres

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

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

相关文章

openssl 3和qt5好像打架哎

openssl 3和qt5好像打架哎用~/ssf2fcitx把搜狗的皮肤转换成fcitx的皮肤。 ssf2fcitx用了qt5. 29个.ssf文件中有2个segmentation error. #0 0x00007ffff7ae00f0 in ?? () from /lib/x86_64-linux-gnu/libcrypto.so.3#…

给一个百分制成绩,要求输出成绩等级‘A,B,C,D,E

物联1251 LYH include <stdio.h> int main() { float a; scanf("%f", &a); if( a>=90 ) printf("A"); else if( a<90&a>=80 ) printf("B"); else if( a<80&a…

大模型应用开发技术路线(上):从概念到RAG实战,这套方法论让我从0到1落地企业级AI应用

本文分享了作者从0到1落地企业级AI应用的经验,重点介绍检索增强生成(RAG)技术路线。涵盖RAG核心概念、架构组件、文档处理、向量存储、提示工程等关键技术,以及评估优化方法和常见问题解决方案,提供了实用的实施指南…

20251103 之所思 - 人生如梦

20251103 之所思1. 昨天跑完十公里之后没有做任何补给就匆忙开车回另一个城市,开着开着感觉很困,但是因为在高速上,起点和终点也没有服务区,所以就一直坚持,有几秒钟自己应该是睡着了,突然不知是什么东西(第六感…

COMSOL Multiphysics 6.3 软件下载安装教程(包含许可证设置),从获取安装包到成功启动

目录一、COMSOL Multiphysics 6.3 软件介绍二、 COMSOL Multiphysics 6.3下载方式三、 COMSOL Multiphysics 6.3安装配置(一) COMSOL Multiphysics 6.3系统要求(二) COMSOL Multiphysics 6.3安装前准备四、 COMSOL…

11月3日

今日主要完成了城发投项目管理系统的开发工作。重点搭建了系统基础架构,包括数据库设计、前端页面布局和核心功能模块的实现。通过解决JSP页面与Java类的兼容性问题,加深了对MVC模式的理解。在项目立项功能中,完善了…

2025.11.3

今天进行了java考试

2025.11.3总结

今天继续学软考,将23种设计模式及其概念过了一下,并将下午题的第三问找出做题技巧 第一题的第三问有些思路了 对于实体类E,方法P,数据库表D,之间的数据流传递是根据说明中的一定规律来的。 具体解释为。 实体类调用…

Python中的数据串用:以推荐系统中“用户偏好管理”为例

Python中的数据串用:以推荐系统中“用户偏好管理”为例 在推荐系统中,“用户偏好管理”是核心模块之一。它需要精准记录每个用户的浏览历史、评分、兴趣标签等数据,以此为基础生成个性化推荐。但如果在实现时忽略了…

JOIST/JOISC 板刷计划

11.3 23:00 开始写。 你说的对,但是我真的分不清这两个又啥区别 /kk。 P9331 [JOIST 2023] 护照 / Passport 把 \(i\) 连向 \(i+n\) 边权为 \(1\),\(i+n\) 连向 \([l_i,r_i]\) 边权为 \(0\)。 答案似乎是 \(dis(1,x)…

11.3日学习笔记

实验3:工厂方法模式 本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解工厂方法模式的动机,掌握该模式的结构; 2、能够利用工厂方法模式解决实际问题。 [实验任务一]:加密算法 目前常用的加密算法…

Serilog 日志库简单实践(二):控制台与调试 Sinks(.net8)

本文主要介绍了控制台与调试 Sinks,并通过示例项目简单演示了它们的用法,供参考。〇、前言 前文已经介绍过什么是 Serilog,以及其核心特点,详见:https://www.cnblogs.com/hnzhengfy/p/19167414/Serilog_basic。 本…

Stable Diffusion v4.8 保姆级下载安装教程:新手零失败实操指南(含 ControlNet 配置)

目录一、Stable Diffusion核心信息介绍二、Stable Diffusion 详细安装操作指南模块 1:Stable Diffusion 安装包和模型下载模块 2:Stable Diffusion安装步骤(每步带踩坑提醒,零失败)步骤 1:解压文件(最容易出错的…

6-10 阶乘计算升级版 (20 分)

#include <stdio.h> void Print_Factorial ( const int N ); int main(){ int N;scanf("%d", &N); Print_Factorial(N); return 0;} /* 你的代码将被嵌在这里 */ 打印N!的值,涉及到大数…

每日收货

package Calculation; import javax.swing.; import java.awt.; import java.util.Timer; import java.util.TimerTask; public class TimeFrame extends JPanel { private JLabel timeLabel; // 显示时间 private Tim…

【C130x 离在线】Python使用import opuslib 报错解决方案

背景 最近在用 CI130X 离在线的SDK测试串口采音(采用Opus压缩),然后用 deepSeek 写了一段 python 测试脚本; 由于采集得到的是Opus格式的数据,最后生成的文件也是 Opus 格式的文件,因此需要写一个脚本进行解码,…

读《Python神经网络编程(异步图书) 塔里克拉希德》有感

近日来感觉需要学习的东西还是很多。这本书很早就躺在我的电脑里了,记得是一次出差时想下载到我的surface中看的,但是一直没看下去。最近对深度学习入门感兴趣,于是想找些入门书籍来看,这本书比较简短,用通俗的语…

【CI130x 离在线】Python使用import opuslib 报错解决方案

一、下载opuslib库 1、先在命令行cd到自己Python所在目录路径 2、运行以下指令 python.exe -m pip install opuslib 二、运行代码出现错误 raise Exception(Could not find Opus library. Make sure it is installed.)…

002 vue3-admin项目的目录及文件说明之.gitignore文件

.gitignore 文件是 Git 版本控制系统中非常重要的配置文件,用于指定哪些文件或目录应该被 Git 忽略,不纳入版本控制。 基本概念 作用告诉 Git 哪些文件不需要追踪 避免将不必要的文件提交到代码仓库 保持仓库清洁,减…

2025.11.03 正睿

正睿二十连测可以把左移操作看成将某个元素丢到最后。 如果两种颜色相交了,一定要把一种颜色全丢到最后。 所以题目转化为至少要往后丢多少个元素(最多保留多少个元素不动)。也就是每种颜色设 \(l_i, r_i\) 为其第一…