博客 / 用户故事

构建 Chronicle:Temporal 如何使用 ClickHouse 大幅提升可观测性

author avatar
ClickHouse 团队
2024 年 11 月 14 日 - 8 分钟阅读

简介

Temporal 是一个持久化执行平台,帮助企业构建可扩展的应用程序,而无需牺牲生产力或可靠性。Temporal 由两位长期合作者于 2019 年推出,他们拥有超过 15 年为开发者构建关键任务平台的经验,Temporal 作为一个开源解决方案,用于管理复杂的、长期运行的工作流程。自那时以来,它已被包括 Netflix、Nvidia、Datadog、OpenAI 以及当然还有 ClickHouse 等创新公司在内的 1500 多名用户所采用。

随着公司发展并在 2022 年推出 SaaS 产品 Temporal Cloud,团队意识到需要先进的可观测性工具来监控其多租户架构并支持平台的扩展。特别是,他们需要一个能够高效处理海量数据集并提供实时洞察而不会增加成本的系统。

在 2024 年 8 月于西雅图举行的见面会上,Temporal 的高级软件工程师 Sean Gillespie 解释了团队如何构建一个创新的新可观测性系统,他们称之为 Chronicle。在 ClickHouse 的帮助下,他们能够保持数据查询的快速和基础设施成本的低廉,同时还能扩展以满足不断增长的需求。

现代可观测性面临的挑战

可观测性对于理解基于云的系统的健康状况至关重要,但这带来了挑战,尤其是在像 Temporal Cloud 这样高度多租户的环境中。

从核心上讲,可观测性取决于收集和分析日志、指标和追踪的能力,以深入了解系统性能和用户体验。“可观测性不仅仅是理解错误和中断,”Sean 引用 Honeycomb.io 创始人 Charity Majors 的话说。“它是关于主动理解我们的软件以及用户如何体验它,通过我们可以收集并高效查询的原始数据,这要归功于 ClickHouse。”

对于 Temporal 而言,最初的挑战是处理基数问题——由跟踪唯一值的需求引起,例如租户 ID,它随着租户数量呈指数增长。在多租户系统中,租户和系统指标的每个组合都会成倍增加数据集,导致存储需求膨胀和查询性能下降。

“在我们的案例中,如果你有大量租户进入你的系统,并且你添加新的节点来容纳新的租户,那么你的系统产生的指标数量就会呈平方级增长,”Sean 说。“这对我们来说是一个巨大的问题。”

使情况更加复杂的是需要按租户和环境对数据进行切片,以便快速识别和解决影响特定客户的问题。Sean 和 Temporal 团队意识到,以这种方式扩展可观测性将需要一种全新的方法——一种可以有效地实时管理和查询如此庞大的数据量的方法。

使用 ClickHouse 构建 Chronicle

2023 年,Temporal 开始构建他们新的可观测性系统 Chronicle。他们选择了列式 OLAP 数据库 ClickHouse,因为它比传统的时序数据库(如 Prometheus 和 Graphite)更具优势,并且 Sean 将 ClickHouse 描述为“非常出色的技术”。

根据 Sean 的说法,团队在项目开始时的两个主要目标之一是消除字段基数作为扩展的担忧。“我们希望我们的可观测性系统能够接受基数并尽可能多地摄取数据,”他说。

Temporal 的另一个主要目标是启用以前不可能实现的新查询模式。“这对我们的开发者成功组织非常重要,”Sean 说。“我们想深入了解并准确了解我们的客户遇到的问题类型。”

在西雅图的见面会上,Sean 分享了关于 Chronicle 的三个关键组件的更多信息:分布式表、模式优化和写入时聚合。

分布式表

Chronicle 最重要的功能之一是它在 ClickHouse 中使用了分布式表。Temporal 在全球 14 个区域运营,但为了管理成本,他们将其可观测性数据整合到五个集中式枢纽中,每个枢纽都有一个专用的 ClickHouse Cloud 服务。

通过利用 AWS PrivateLink,他们最大限度地减少了数据需要在区域之间移动时的出口费用——对于离开特定区域的所有带宽,出口费用可能在每千兆字节 2 美分到 9 美分之间。相反,查询被推送到数据所在的区域,从而可以在不跨区域移动大量数据的情况下实现高效的数据处理。

“我们试图让我们的数据保持静止,在其创建的可用区内,这样我们就不会在每次数据离开可用区时被收取数据传输费用,”Sean 说。“该系统的设计目的是尽可能廉价地将数据导入 ClickHouse。”

模式优化

Chronicle 的模式经过精心设计,以优化 Temporal 最常见的查询。日志使用基于集群、命名空间和时间戳的排序键进行组织,这确保了针对特定租户或环境的查询可以高效执行。这种结构意味着即使在跨大型数据集运行复杂的调查性查询时,Temporal 也能保持高性能。

正如 Sean 解释的那样,“这种排序键的选择为调查式查询提供了非常可靠的性能”,使其更容易深入挖掘特定的日志或指标。这种模式优先的方法一直是帮助 Chronicle 随着 Temporal 不断增长的客户群进行扩展的关键。

写入时聚合

Temporal 还受益于 ClickHouse 对物化视图的支持,这允许写入时和读取时聚合。虽然许多可观测性工具由于其灵活性而选择读取时聚合,但 Temporal 有策略地同时依赖两者。写入时聚合用于需要快速加载的仪表板,为常见查询提供实时响应,而读取时聚合用于更具探索性的查询。

例如,使用 ClickHouse,与请求持续时间相关的查询(例如显示延迟模式的热图)可以在 50 毫秒内呈现,从而实现更好的系统监控,并带来 Sean 所谓的“真正的实时性能”。

“我们使用它来优化常见的仪表板查询,以便仪表板几乎可以瞬间加载,”他说。“我们可以做到这一点,因为在 ClickHouse 摄取计算的宏大计划中,ClickHouse 物化视图操作相对便宜。”

性能大幅提升

自从使用 ClickHouse 实施 Chronicle 以来,Temporal 已经看到了许多重大胜利。他们的摄取系统现在每秒处理多达 150,000 行,单个 CPU 内核在峰值效率下每秒处理多达 60,000 行。Sean 说异步插入“非常重要”,他解释说:“我们发现,通过使用等待时间为 5 秒的异步插入,我们可以使用相同的计算配置摄取更多的数据。”

除了摄取速度之外,该系统还提供了“极其快速”的查询性能,写入聚合表在 200 毫秒内返回结果——对于实时监控仪表板尤其有价值。Chronicle 还显示出令人印象深刻的数据压缩能力,其最大的表实现了 36.59 倍的压缩率(Sean 指出,这“是 ClickHouse 网站宣传的三倍”),这主要归功于对租户 ID 和其他低基数字符串的有效处理。

最后,Sean 强调了团队对整体系统优化的满意度:“ClickHouse 的写入时聚合在查询性能方面尤其令人印象深刻,这使得我们的内部仪表板看起来非常流畅。”

未来的道路

在 Chronicle 成功的基础上,Temporal 继续探索增强其可观测性的方法。Sean 指出,一个潜在的改进领域是转向无模式摄取,这可以减少管理新数据源加入时的表模式的开销。Temporal 正在探索的另一个想法是分离用于查询和摄取的计算池的可能性。这种改变将确保繁重的查询不会中断摄取过程,从而带来更高的系统稳定性。

“我对我们在 Temporal 使用 ClickHouse 非常兴奋,”Sean 说。随着他们不断创新,团队有信心 ClickHouse 仍将是他们可观测性战略的基石。它的灵活性和性能对于扩展 Chronicle 已经至关重要,并且该数据库有望支持平台的持续增长,使他们能够以无与伦比的速度、效率和可扩展性处理不断增长的数据量。

想了解更多关于 ClickHouse 的信息,看看它如何为您的组织带来实时可观测性吗?免费试用 ClickHouse Cloud 30 天。

立即开始使用 ClickHouse Cloud,并获得 300 美元的信用额度。在 30 天试用期结束时,继续使用按需付费计划,或联系我们了解更多关于基于用量的折扣信息。访问我们的定价页面了解详情。

分享这篇文章

订阅我们的新闻通讯

随时了解功能发布、产品路线图、支持和云服务!
正在加载表单...
关注我们
X imageSlack imageGitHub image
Telegram imageMeetup imageRss image
©2025© ClickHouse, Inc. 总部位于加利福尼亚州湾区和荷兰阿姆斯特丹。