DoubleCloud 即将停止服务。利用限时免费迁移服务迁移到 ClickHouse。立即联系我们 ->->

博客 / 用户案例

Prefect - 基于 ClickHouse 的事件驱动工作流编排

author avatar
Sarah Bedell & Chris Guidry,Prefect
2024 年 5 月 30 日

Prefect 的编排和可观察性平台帮助开发人员构建和理解他们的数据管道,并且至关重要的是,能够对数据管道做出反应。提供一个弹性和多功能的产品指导着他们的使命,即不断发展、适应和保持与开发人员需求的相关性。毫不奇怪,他们正在推动向基于事件的架构迁移,正如 Prefect 的增长营销总监 Sarah Krasnik Bedell 所解释的那样:“我们希望能够处理各种不同的数据管道和代码任务。最终目标是支持开发人员、数据工程师、平台工程师和软件工程师所需的任何部署和触发模式”,这就是 ClickHouse 成为 Prefect 不可或缺的一部分的原因。

Screenshot 2024-05-29 at 8.27.30 AM.png

Prefect - 大规模事件驱动工作流自动化

有趣的是,Prefect 并不专注于管道成功,而是专注于处理失败。“我们希望以最有效的方式暴露错误,以帮助我们的用户对失败做出反应,”Bedell 说。她继续说道:在跟踪最重要的时刻是事情失败的时候:“没有人会登录编排仪表盘并说‘哇,我的管道今天运行得很好’,然后继续查看仪表盘并停留在那里,对吧?” 失败会产生观察和反应的紧迫性——而这正是 Prefect 的重点。

当用户捕获和处理大量数据时,工作流可观察性、灵活的自动化和通知变得越来越重要。Prefect Cloud 应运而生,它建立在 Prefect 开源产品的强大基础之上,以交钥匙、企业级和安全的方式满足这些需求:“使用 Prefect Cloud,我们将可观察性提升了一个档次,使人们能够观察和响应驱动其业务的任何代码的运行状况,”Bedell 说。

Prefect Cloud 并非观察某个特定运行(工作流执行的一个实例)失败或出现问题的原因,而是转向更高级别的抽象,旨在面向团队领导者。Bedell 希望提供能够回答更复杂问题、涵盖业务影响范围的可观察性:“例如,我们希望使我们的客户能够回答‘在数据移动方面,最大的成本中心在哪里?’,或者可能是‘这些昂贵的机器学习管道是否已优化?’这不仅仅是批处理数据管道,而是一个更广泛的代码库,而围绕 ClickHouse 的讨论也由此开始。”

Prefect Cloud 每天持续运行超过一百万个“流运行”——“流”是 Prefect 中最基本的概念,表示工作流逻辑作为代码的容器。Bedell 解释道:“每个流运行可能包含从几个到数百个任务不等。然后在每个任务中,从最大的对象到最小的对象分解,每个对象都会创建事件,而这些事件可能是状态事件,也可能是创建的工件——它不是一个任务,一个对象。” 拥有多租户架构意味着来自不同客户的事件位于同一个数据库中,全部切分为分区。事件也是客户的日志消息。因此,当客户在流过程中记录数据时,这些日志消息也是事件,正如 Prefect 的员工软件工程师 Chris Guidry 所解释的那样:“我们 Prefect Cloud 上的日志功能也由相同的事件流支持,因此数据量与我们观察的基本指标相关联——人们每天运行多少个流运行。任何给定的流都可能产生 200 多个事件。2 月份,Prefect 每天有 1.5 亿到 2 亿个事件,而我们的目标远不止于此。”

原始数据栈 - Google BigQuery 和 PostgreSQL

Prefect 团队最初将可观察性平台构建在 Google BigQuery(一个传统云数据仓库)上,作为主要数据存储,并在前面使用一个中等规模的 PostgreSQL 数据库实例作为热数据缓存。成功和增长很快导致了数十亿级别的事件流,他们正在触及 PostgreSQL 能力的边缘,因为这个事务型数据库并非为处理分析工作负载而构建的。“所有这些事件都存储在 BigQuery 表中的长期存储中。我们不得不将其垂直扩展几个等级,并且我们绝对在触及 PostgreSQL 和 Cloud SQL 能够处理的极限,”他继续说道。

当 Prefect 开始探索对客户工作流进行更高级别分析的可能性时,Guidry 说,在可靠地拉取事件流并显示发生在某个对象上的所有事件或在工作流运行过程中发生的事件方面,已经存在挑战:“当我们开始讨论分析一周内发生的许多工作流中的所有事件时,我们很快意识到这在我们的 PostgreSQL 上行不通,因为我们根本无法查询和聚合许多内容。” 他们需要重新思考技术栈,以匹配他们想要为客户提供的新的价值。

此外,正如 Guidry 所描述的那样,构建交互式、数据驱动的应用程序,需要实时向用户提供答案,这意味着成本正在上升:“您的应用程序或用户可能每天查询数百次或数千次该信息。查询这样的信息非常昂贵。” 成本上升是技术/用例不匹配的直接结果。Postgres 数据库非常适合处理事务工作负载,但在回答分析问题时,并不会有效地利用硬件资源,因为它作为行存储数据库在对少数几列运行聚合时扫描了过多的数据。另一方面,Google BigQuery 最初设计用于处理数据仓库工作负载——不频繁的临时查询,因此,其基于扫描数据量定价的模型对于实时分析工作负载(其中查询由应用程序生成且并发性高)来说非常昂贵。

ClickHouse Cloud - 为下一代工作流可观察性提供支持的实时分析平台

Screenshot 2024-05-29 at 8.27.37 AM.png

为了为客户构建下一代工作流编排可观察性解决方案,Guidry 简单地说:“我们需要一个新的数据库。”他们希望为 Prefect 用户提供更全面的指标和触发器,以及一种更强大的方法来询问这些数据:“对我们来说,ClickHouse 的优势在于查看海量的时间序列数据,它非常适合事件流,我们对 ClickHouse 处理挑战的方式非常满意。”ClickHouse 现在是 Prefect 数据库产品组合的一部分,但 Guidry 补充道:“它非常重要,因为它将使我们正在考虑的可观察性功能得以发展,并从 Prefect Cloud 中提供更多价值。”

Prefect Cloud 推出了指标作为利用 ClickHouse 进行更高级聚合的第一种方式之一,这是朝着其可观察性愿景迈出的真正一步:“失败很可能是需要解决的更大问题的征兆。它是否每天都在特定时间发生?我们希望我们的用户能够更大规模地修复错误,”Bedell 解释道。虽然团队从一小部分开始,仅提供从过去一周的工作流运行中获取的指标的几张卡片,但 Guidry 指出:“如果没有 ClickHouse,我们所做的事情是不可能实现的,这确实产生了很大的影响!”

在指标之后,出现了自动化,Guidry 解释说,这是最早实现的功能之一,其主要目标不是捕获信息,而是至关重要的是使用户能够对其采取行动,并为 Prefect Cloud 用户提供强大的功能集,旨在在其工作区内创建响应式系统。该系统现在可以通过触发后续操作来响应特定事件,因此用户可以更好地降低风险并保持运营效率。例如,如果延迟工作流发生的次数超过某个阈值,则发送到 Slack 的自动警报可以发出潜在问题的信号,需要关注。Guidry 解释了其他场景:“用户可以执行自动操作,例如数据库重启,以快速解决潜在的数据库问题。如果错误率在特定时间范围内超过预定的阈值,系统可以自动生成包含详细信息的新事件,以便快速解决。”

其他优势 - 更简单、更强大的数据栈和成本节约

除了使 Prefect 能够实现其在 ClickHouse 之上构建实时数据驱动应用程序的愿景之外,从基于 BigQuery 和 PostgreSQL 的分析栈迁移还有助于简化操作并节省成本。

ClickHouse 允许 Prefect 将多个架构组件合并到一个组件中,简化了其架构并使其更可靠:“ClickHouse 以一种全新的方式创造了弹性,并且需要维护的系统更少,我认为这也是这项工作如此重要的另一个原因。”Bedell 说。Prefect 还拥有自主处理大规模中断和不可预见事件的工具,他们正在从该平台在创建弹性和适应性方面的潜力中获益。

ClickHouse 是关键功能,而不是成本节约,但 ClickHouse 已将成本降低到每月不到 8,000 美元。

Prefect 每月在 CloudSQL 和 BigQuery 超支上花费约 12,000 美元,因为他们有一些客户的查询非常复杂,或者需要访问大型数据集或历史数据,这将触发 BigQuery 的使用。Prefect 超出了其预算和使用限制,导致额外成本。实施 ClickHouse 的主要动机是关键功能,而不是成本节约,但 ClickHouse 已将成本降低到每月不到 8,000 美元。正如 Guidry 总结的那样:“我们节省了成本,节省的成本不容忽视,但这并不是驱动因素。这是一项质的飞跃。在我们拥有 ClickHouse 之前,我们根本无法做到我们想要的事情,这就是我们对此感到如此兴奋的原因。”

关于 Prefect

Prefect 是一个用途广泛的事件驱动编排和工作流可观察性平台。用于编排数据管道,它简化了构建、调度和监控工作流的过程。基于 Python 的框架意味着用户可以将复杂的工作流定义为代码,从而更容易管理依赖项、处理错误和扩展工作流。Prefect 广泛应用于金融、医疗保健、电子商务等行业,在这些行业中,高效管理和处理海量数据至关重要。Prefect 不断发展,并提供免费的开源社区版、付费的企业版和具有更多功能和支持的 Prefect Cloud 产品。

分享此帖子

订阅我们的时事通讯

随时了解功能发布、产品路线图、支持和云产品!
正在加载表单…
关注我们
Twitter imageSlack imageGitHub image
Telegram imageMeetup imageRss image