Prefect - 由 ClickHouse 提供支持的事件驱动工作流编排

图片

本文字数:4068;估计阅读时间:11 分钟

作者:Sarah & Chris

本文在公众号【ClickHouseInc】首发

图片

Prefect 的编排和可观测性平台帮助开发者构建和理解他们的数据管道,并能够对其做出响应。通过提供一个有弹性和多功能的产品,Prefect 实现了其不断进化、适应并保持与开发者需求相关性的使命。正如 Prefect 的增长营销总监 Sarah Krasnik Bedell 所解释的那样:“我们希望能够处理各种类型的数据管道和代码任务。最终的目标是满足开发者、数据工程师、平台工程师和软件工程师所需的任何部署和触发模式。” 这就是为什么 ClickHouse 已成为 Prefect 的核心组成部分。

图片

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

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

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

相比于观察某次特定运行(工作流执行实例)失败或出现问题的原因,Prefect Cloud 正在向一个更高层次的抽象发展,旨在为团队领导提供支持。Bedell 希望提供一种可观测性,能够解答涵盖业务影响的更复杂问题:“例如,我们希望让客户能够回答‘在数据移动方面最大的成本中心在哪里?’,或者‘这些昂贵的机器学习管道是否得到了优化?’这远不只是批处理数据管道的代码库,这也是关于 ClickHouse 讨论的起点。”

通常情况下,Prefect Cloud 每天运行超过一百万次“流任务”——“流”是 Prefect 中表示工作流逻辑的最基本概念。Bedell 解释说:“每次流任务可能包含从几项到数百项任务。在每个流任务中,从最大对象到最小对象,每个都会创建事件,这些事件可以是状态事件,也可以是创建的工件——这不是一项任务,一个对象。”拥有多租户架构意味着来自不同客户的事件位于同一个数据库中,并分割成分区。这些事件也是客户的日志消息。因此,当客户在其流过程中记录数据时,这些日志消息也是事件,正如 Prefect 的高级软件工程师 Chris Guidry 所解释的:“我们在 Prefect Cloud 上的日志功能也是由相同的事件流支持的,因此流量与我们关注的基本指标相关联——人们每天运行多少次流任务。任何给定的流可能产生 200 多个事件。在二月,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 - 支持下一代工作流可观测性的实时分析平台

图片

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

Prefect Cloud 推出了 Metrics 作为利用 ClickHouse 进行更高级聚合的首批方法之一,这是实现他们可观测性愿景的重要一步:“失败可能是需要解决的更大问题的症状。它每天在特定时间发生吗?我们希望用户能够在更大范围内修复错误,” Bedell 解释道。尽管团队起步时规模很小,只提供了一些从过去一周的流任务中得出的度量指标卡片,Guidry 指出:“如果没有 ClickHouse,我们无法实现这些目标,这非常有影响力!”

在 Metrics 之后,推出了 Automations,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。

征稿启示

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

内容概要:本文围绕EKF SLAM(扩展卡尔曼滤波同步定位与地图构建)的性能展开多项对比实验研究,重点分析在稀疏与稠密landmark环境下、预测与更新步骤同时进行与非同时进行的情况下的系统性能差异,并进一步探讨EKF SLAM在有色噪声干扰下的鲁棒性表现。实验考虑了不确定性因素的影响,旨在评估不同条件下算法的定位精度与地图构建质量,为实际应用中EKF SLAM的优化提供依据。文档还提及多智能体系统在遭受DoS攻击下的弹性控制研究,但核心内容聚焦于SLAM算法的性能测试与分析。; 适合人群:具备一定机器人学、状态估计或自动驾驶基础知识的科研人员及工程技术人员,尤其是从事SLAM算法研究或应用开发的硕士、博士研究生和相关领域研发人员。; 使用场景及目标:①用于比较EKF SLAM在不同landmark密度下的性能表现;②分析预测与更新机制同步与否对滤波器稳定性与精度的影响;③评估系统在有色噪声等非理想观测条件下的适应能力,提升实际部署中的可靠性。; 阅读建议:建议结合MATLAB仿真代码进行实验复现,重点关注状态协方差传播、观测更新频率与噪声模型设置等关键环节,深入理解EKF SLAM在复杂环境下的行为特性。稀疏 landmark 与稠密 landmark 下 EKF SLAM 性能对比实验,预测更新同时进行与非同时进行对比 EKF SLAM 性能对比实验,EKF SLAM 在有色噪声下性能实验
内容概要:本文围绕“基于主从博弈的售电商多元零售套餐设计与多级市场购电策略”展开,结合Matlab代码实现,提出了一种适用于电力市场化环境下的售电商优化决策模型。该模型采用主从博弈(Stackelberg Game)理论构建售电商与用户之间的互动关系,售电商作为领导者制定电价套餐策略,用户作为跟随者响应电价并调整用电行为。同时,模型综合考虑售电商在多级电力市场(如日前市场、实时市场)中的【顶级EI复现】基于主从博弈的售电商多元零售套餐设计与多级市场购电策略(Matlab代码实现)购电组合优化,兼顾成本最小化与收益最大化,并引入不确定性因素(如负荷波动、可再生能源出力变化)进行鲁棒或随机优化处理。文中提供了完整的Matlab仿真代码,涵盖博弈建模、优化求解(可能结合YALMIP+CPLEX/Gurobi等工具)、结果可视化等环节,具有较强的可复现性和工程应用价值。; 适合人群:具备一定电力系统基础知识、博弈论初步认知和Matlab编程能力的研究生、科研人员及电力市场从业人员,尤其适合从事电力市场运营、需求响应、售电策略研究的相关人员。; 使用场景及目标:① 掌握主从博弈在电力市场中的建模方法;② 学习售电商如何设计差异化零售套餐以引导用户用电行为;③ 实现多级市场购电成本与风险的协同优化;④ 借助Matlab代码快速复现顶级EI期刊论文成果,支撑科研项目或实际系统开发。; 阅读建议:建议读者结合提供的网盘资源下载完整代码与案例数据,按照文档目录顺序逐步学习,重点关注博弈模型的数学表达与Matlab实现逻辑,同时尝试对目标函数或约束条件进行扩展改进,以深化理解并提升科研创新能力。
内容概要:本文介绍了基于粒子群优化算法(PSO)的p-Hub选址优化问基于粒子群优化算法的p-Hub选址优化(Matlab代码实现)题的Matlab代码实现,旨在解决物流与交通网络中枢纽节点的最优选址问题。通过构建数学模型,结合粒子群算法的全局寻优能力,优化枢纽位置及分配策略,提升网络传输效率并降低运营成本。文中详细阐述了算法的设计思路、实现步骤以及关键参数设置,并提供了完整的Matlab仿真代码,便于读者复现和进一步改进。该方法适用于复杂的组合优化问题,尤其在大规模网络选址中展现出良好的收敛性和实用性。; 适合人群:具备一定Matlab编程基础,从事物流优化、智能算法研究或交通运输系统设计的研究生、科研人员及工程技术人员;熟悉优化算法基本原理并对实际应用场景感兴趣的从业者。; 使用场景及目标:①应用于物流中心、航空枢纽、快递分拣中心等p-Hub选址问题;②帮助理解粒子群算法在离散优化问题中的编码与迭代机制;③为复杂网络优化提供可扩展的算法框架,支持进一步融合约束条件或改进算法性能。; 阅读建议:建议读者结合文中提供的Matlab代码逐段调试运行,理解算法流程与模型构建逻辑,重点关注粒子编码方式、适应度函数设计及约束处理策略。可尝试替换数据集或引入其他智能算法进行对比实验,以深化对优化效果和算法差异的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值