硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

特斯拉如何基于 ClickHouse 构建千万亿级别的可观测性平台

ClickHouse

  • 2025-08-07
    北京
  • 本文字数:2909 字

    阅读完需:约 10 分钟

大小:1.38M时长:08:01
特斯拉如何基于 ClickHouse 构建千万亿级别的可观测性平台

地球上没有几家公司能像特斯拉这样运行在如此大规模上。从庞大的超级工厂,到关键的能源系统,再到全球联网的车辆网络,要让这些组件协调运作,就需要实时掌握系统各处的运行状态。


“特斯拉可不是小型企业,”高级职员软件工程师 Alon Tal 说道,“我们会生成大量的指标数据,这些数据用于长期分析、预测和异常检测等用途。”



当需要构建新一代可观测性系统时,Alon 和团队考察了一系列常见方案。尽管像 Prometheus 这样的工具在理论上很出色,但根本无法满足特斯拉的规模需求。“它不能横向扩展,纵向扩展也有限,”他解释说,“而且作为单机系统,它的高可用性也无法保障。一旦宕机,所有指标数据都会丢失——这是绝对不能接受的。”


他们需要的是一个更快、更稳、更具可扩展性的系统:能每秒摄入数千万行数据、支持多年数据保留、在高负载下依然保持响应的系统。因此,他们选择了 ClickHouse,并构建出 Comet——一个具备 Prometheus 式简洁体验,同时具备 ClickHouse 等级性能与可靠性的特斯拉级可观测平台。


本文将深入解析特斯拉如何构建 Comet、为何选择 ClickHouse 作为核心,以及如何通过一场万万亿行级的负载测试,验证其超越常规系统的扩展能力。


可观看 Alon 在 ClickHouse 首届 2025 Open House 用户大会上的演讲。

00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    一系列不可妥协的要求


    从一开始,团队就明确了目标要求。首先必须具备可扩展性。对特斯拉来说,这意味着系统必须能实时处理海量数据,并确保在数据持续增长的前提下依然能稳健运行。


    高可用性同样关键。“在特斯拉,指标数据的丢失可能造成现实世界的物理后果,”Alon 指出。在这种背景下,系统必须近乎“牢不可破”。


    数据保留能力也很重要。团队希望能回溯数月甚至数年的历史,以识别趋势和预警问题。持久性则是基础:一旦接受某项指标,无论是否重启都必须永久保留。而响应速度也容不得妥协。“在排障时,没有人能接受卡顿的仪表盘。”


    灵活性也是关键需求。他们希望能提出复杂问题、运行自定义分析,支持各种内部使用场景。“我们不希望受限于某种简单的领域特定语言,而是能对数据自由发问。”


    最后一点,整个系统必须兼容 PromQL——这是特斯拉用于指标分析的核心查询语言。“我们的工程师对它熟悉,也喜欢用它,”Alon 说。他们还积累了大量基于 PromQL 的仪表盘和告警规则。“没人愿意重写这些内容。”

    选择 ClickHouse 的理由


    起初,团队自然地想到 PromQL 背后的参考实现:Prometheus。这款系统广泛使用且易于部署。但结合特斯拉的规模和需求,它并不可行。“于是我们决定自己打造平台。”


    首个也是最基础的决策是:数据应该存在哪。团队评估了多个选项,最终因性能与灵活性选定 ClickHouse。


    “在我们看来,数据存在 ClickHouse 中,比存在任何其他系统都更优,”Alon 说,“它让你可以灵活切分和钻取数据,并在可接受的响应时间内获取答案。”


    “ClickHouse 满足了我们所有要求,”他补充道,“无论是可用性、速度还是持久性,应有尽有。”它还带来了一些意想不到的优势,比如支持可执行用户自定义函数(UDF)[https://clickhouse.com/docs/sql-reference/functions/udf]。这点尤其重要,“因为有些逻辑难以直接用 SQL 表达,而 UDF 给我们提供了关键的兜底机制。”


    最终,选择变得毫无悬念。ClickHouse 提供了大规模所需的性能,也让团队有信心构建一个既强大又熟悉的平台。“没有其他系统能与 ClickHouse 相比。”Alon 说。

    探秘 Comet 的架构设计


    以 ClickHouse 为基础,团队设计出一个能满足特斯拉需求的架构系统,产出即为 Comet——一个专为指标打造的平台,包含两条主数据通路:一条用于海量数据的摄取,另一条用于实时转译并执行 PromQL 查询。


    在数据摄取方面,特斯拉基础设施中的 OpenTelemetry 采集器将指标推送到兼容 Kafka 的队列中。然后,一套由团队自主开发的 ETL 流程会将数据从 OTLP 格式转为结构化行记录,进行批处理后写入 ClickHouse。该架构便于横向扩展,且即使数据激增也能维持性能稳定。“它是非常具备可扩展性的摄取管线。”Alon 说道。


    Comet 的摄取管线通过 Kafka 和 OTLP 将指标批量写入 ClickHouse。



    但真正的核心在于转译器。这个引擎可实时将 PromQL 查询转译为 ClickHouse SQL,这正是 Comet 的“魔法”所在。工程师无需学习新语言,就能继续使用熟悉的 PromQL,同时享受 ClickHouse 带来的查询性能与灵活度。


    Comet 将 PromQL 转译为 ClickHouse SQL,并与 Grafana 与现有告警工具无缝兼容。


    查询执行完成后,Comet 会将响应结果格式化为与 Prometheus API “字节级一致”的格式。这意味着所有现有的仪表盘、告警与运维工具都能继续照常使用,无需改写任何内容或配置额外连接器。“没人会意识到这并非标准的 Prometheus 环境。”Alon 说。


    为保证结果一致性,团队还开发了专用测试套件,会对同一 PromQL 查询在 Prometheus 与 Comet 上分别运行并比对结果,确保完全一致。告警系统同样支持所有原有规则与集成,迁移过程无需额外改造。


    大规模验证系统能力

    最终测试结果:总计摄取数据超过一千万亿行——“整个过程中没有一丝故障,没有任何问题。内存占用稳定,CPU 使用平稳。这一切让人惊叹。”


    如今,Comet 系统正以每秒数千万行的速率持续摄入数据。“而且它还没有达到上限,”Alon 表示,目前还有多个内部团队正在逐步接入。


    在时序数据领域,特斯拉所处的规模几乎没有系统能应对。每个时序代表一组相关指标样本流,特斯拉迄今已积累了数百亿个时序。每个时序又包含大量数据点,导致总体数据行数呈指数级上升。“这本身就是大多数系统难以承受的高基数挑战,”Alon 表示,“尤其是其他系统通常对 high-cardinality 时序非常敏感。”


    目前,Comet 存储着数十万亿个样本。团队对其扩展性信心十足,甚至进行了极限验证:将数据摄取推至每秒十亿行,并连续运行 11 天。最终系统共摄入超过一千万亿行数据——“运行过程中没有任何故障,内存平稳、CPU 平稳,整个过程简直美得令人窒息。”


    了解 ClickHouse 如何支撑大规模可观测性场景,访问 ClickStack[https://clickhouse.com/use-cases/observability]。


    一条 count 查询显示 Comet 成功摄取超过一千万亿行数据,且“没有任何故障”。


    特斯拉与 ClickHouse 的下一步


    随着 Comet 在超大规模场景下稳定运行,特斯拉也在拓展更多使用场景,比如分布式追踪。基于同一套转译器机制,他们加入了对 TraceQL 的支持,让工程师查询追踪数据也能像查询指标一样轻松。


    团队还在探索将 Comet 开源的可能性。“如果我们能做到,所有人都可以亲自试试这个系统。”Alon 表示。


    Comet 是特斯拉持续创新的一个缩影。它基于 ClickHouse 构建,使用 PromQL 访问,覆盖从超级工厂到数百万联网汽车的各个系统,为工程师提供实时洞察与可观测能力,以应对特斯拉级别的挑战。


    “我要感谢每一位 ClickHouse 的贡献者,”Alon 在 Open House 上说,“你们打造的产品非常出色,是我能完成这个项目的根本保障。”


    征稿启示


    面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出 &图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com。




    2025-08-07 14:479698

    评论

    发布
    暂无评论

    com.google.guava:guava 组件安全漏洞及健康分析

    墨菲安全

    组件 组件健康度

    火山引擎开源通用多媒体处理框架 BMF

    字节跳动开源

    开源 框架 视频云 多媒体

    【附 Demo】悦数图数据库推出 Graph RAG: 减少大模型“幻觉”,优化向量数据库检索能力

    最新动态

    GitHub Copilot三连更:能在代码行里直接提问,上下文范围扩展到终端

    Openlab_cosmoplat

    人工智能

    低代码是什么?能做什么?

    树上有只程序猿

    低代码 应用开发

    【升职加薪秘籍】我在服务监控方面的实践(2)-监控组件配置

    蓝胖子的编程梦

    elasticsearch Prometheus 服务监控 #Grafana 微服务监控

    全球选手逐鹿清华!首届AI药物研发算法大赛完美收官

    飞桨PaddlePaddle

    人工智能 百度飞桨 飞桨国赛

    软件测试/测试开发丨UI自动化测试用例结构分析

    测试人

    Python 程序员 软件测试 自动化测试 测试开发

    Git 速查表:中级用户必备的 12 个 Git 命令

    Se7en

    com.squareup.okhttp3:okhttp 组件安全漏洞及健康度分析

    墨菲安全

    组件 组件健康度 组件安全漏洞

    软件测试|Python科学计算神器numpy教程(十一)

    霍格沃兹测试开发学社

    WebGL:基于web的交互式2D/3D图形引擎

    3D建模设计

    JavaScript WebGL

    WebVR — 网络虚拟现实

    3D建模设计

    WebVR

    Java实现学生信息管理系统读取Excel数据

    飞算JavaAI开发助手

    软件测试|Mac安装appium报权限问题

    霍格沃兹测试开发学社

    软件测试|SQL AND和OR运算符解析

    霍格沃兹测试开发学社

    关于信创技术你需要了解这些概念

    Onegun

    操作系统 中间件 信创产业 信创生态

    WebAssembly 在云原生中的实践指南

    Se7en

    提升开发能力的低代码思路

    互联网工科生

    软件开发 低代码 企业级应用程序开发

    Katalyst:字节跳动云原生成本优化实践

    字节跳动开源

    开源 Kubernetes 运维 云原生 成本优化

    深入剖析 FastAPI 多线程的最佳实践

    Liam

    Python 程序员 性能优化 后端开发 FastApi

    软件测试|自动化界面操作神器pywinauto教程(一)

    霍格沃兹测试开发学社

    WebGPT VS WebGPU

    3D建模设计

    webgpu webgpt

    3D 碰撞检测

    3D建模设计

    3D 碰撞检测

    软件测试|Python科学计算神器numpy教程(十)

    霍格沃兹测试开发学社

    软件测试|如何更新已经安装的Python第三方库

    霍格沃兹测试开发学社

    6 个用于 3D 网页图形渲染的最佳 WebGL 库

    3D建模设计

    图形引擎

    org.mockito:mockito-core 组件安全漏洞及健康度分析

    墨菲安全

    组件 组件健康度

    特斯拉如何基于 ClickHouse 构建千万亿级别的可观测性平台_DataOps_InfoQ精选文章