2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

HubSpot 使用 Apache Kafka 泳道实现工作流操作的实时处理

作者:Rafal Gancarz

  • 2023-12-11
    北京
  • 本文字数:1194 字

    阅读完需:约 4 分钟

HubSpot 使用 Apache Kafka 泳道实现工作流操作的实时处理

HubSpot 采用在多个 Kafka 主题(称为泳道,swimlanes)上为同一生产者路由消息的方式,避免了消费者群组滞后的积压,并且能够优先处理实时流量。通过自动和手动相结合的方式探测流量峰值,该公司能够确保大多数消费者的工作流能够在无延迟的情况下执行。


HubSpot 提供了一个业务流程的自动化平台,其核心采用工作流引擎来推动操作(action)的执行。该平台可以处理数百万个活动的工作流,每天执行数亿个操作,每秒执行数万个操作。



工作流引擎概览(来源:HubSpot 工程博客)


大部分处理都是异步触发的,使用 Apache Kafka 进行传递,从而实现了操作的源 / 触发器与执行组件之间的解耦。该平台使用了许多 Kafka 主题,负责传递来自各种源的操作数据。使用消息代理的潜在问题在于,如果消息发布得太快,而消费者无法及时处理,等待处理的消息就会积压,这就是所谓的消费者滞后(consumer lag)。


HubSpot 的工程主管 Angus Gibbs 描述了确保近实时处理消息所面临的挑战:


如果在主题上突然出现大量消息,我们就必须处理积压的消息。我们可以扩展消费者实例的数量,但这会增加基础设施成本;我们可以添加自动扩展,但增加新的实例需要时间,而客户通常希望工作流能够以接近实时的方式进行处理。团队认识到,他们需要解决的问题是对所有相同类型或相同来源的消息使用了相同的主题。考虑到该平台被许多客户使用,如果某一个或一小部分客户开始产生大量消息,那么所有的流量均会延迟,所有客户的用户体验都会受到影响。


为了解决这个问题,开发人员选择使用多个主题,他们将其称为泳道(swimlanes),并为每个泳道配置专用的消费者池。应用这种模式的最简单方式是使用两个主题:一个负责实时的流量,一个负责溢出的(overflow)流量。这两个泳道以完全相同的方式处理流量,但是每个主题都有独立的消费者滞后,通过在两者之间适当地路由消息,可以确保实时泳道避免出现任何的(或明显的)延迟。



Kafka 泳道(来源:HubSpot 工程博客)


如果可能的话,系统会从发布的消息中提取元数据,基于此在泳道之间实现消息的自动路由。例如,批量导入所产生的消息可以在消息模式中明确标记出这种操作类型,这样路由逻辑就可以轻松地将这些操作发布到溢出泳道。此外,开发人员还引入了按客户配置来限制流量的功能,并且能够根据报文消费者的最大吞吐量指标设置适当的阈值。


决定如何在泳道之间路由消息的另一个角度是查看操作的执行时间。实际操作将被路由到一个泳道,而慢速操作将被路由到另一个泳道。这一点对 HubSpot 平台尤为重要,因为客户可以创建执行任意 Node 或 Python 代码的自定义操作。


最后,该团队还开发了将特定客户的所有流量手动路由到专用泳道的方法,以防来自客户的流量意外地在主(实时或快速)泳道上造成滞后,而此时自动路由机制均未启动。这样,在团队排查延迟原因时,就对流量进行隔离了。


原文链接

https://www.infoq.com/news/2023/11/hubspot-apache-kafka-swimlanes/


2023-12-11 14:334888

评论

发布
暂无评论
发现更多内容

文心一言 VS 讯飞星火 VS chatgpt (205)-- 算法导论15.4 1题

福大大架构师每日一题

福大大架构师每日一题

photoshop 2021 对显卡的要求 ps2021中文破解版安装包下载

Rose

ps2021破解版 Photoshop 2021 Photoshop 2021要求

App应用程序(概念、开发步骤、技术要点介绍)

天津汇柏科技有限公司

定制软件开发 app定制开发 软件开发定制

软件测试管理进阶,快速掌握高效沟通的汇报技巧

测试人

软件测试 自动化测试 测试开发 测试管理

运维一款月变更70+次的服务,是一种什么体验?

华为云开发者联盟

开发 华为云 华为云开发者联盟

WebSocket 连接保持方法详解

Apifox

程序员 前端 后端 websocket 长连接

马帮ERP与ETLCloud快速同步

谷云科技RestCloud

数据同步 ETL 数据集成 ERP

Solidity案例详解(四)投票智能合约

BSN研习社

区块链 Solidity

VMware Workstation (VM电脑虚拟机)激活精简版

Rose

VMware Fusion破解版下载 虚拟机安装 VM虚拟机密钥

手把手带你快速上手香橙派AIpro

华为云开发者联盟

人工智能 华为云 昇腾 华为云开发者联盟 AI开发板

阿里云大降价后,与主流云厂商的价格对比,你选哪家?

NineData

数据库 阿里云 服务器 云厂商 阿里云降价

Java实战1

thinkers

线程池、Lambda、Java实战

易点天下旗下出海应用数据分析与增长模型平台即将发布,一大波内测福利正在袭来!

新消费日报

C4D 2024.3.2最新破解下载 c4d2024 mac中文版新功能介绍

Rose

3d建模 Cinema 4D 2024 c4d2024

Parallels Desktop 19 虚拟机如何安装?详细PD19图文安装教程 含激活版Windows镜像

Rose

Win11系统下载 Parallels Desktop 19 pd 19 虚拟机安装

常用的Linux命令;Linux常用命令用法及实现方式

小魏写代码

探索AIGC在腾讯自选股应用

ninetyhe

腾讯 AI 大模型 AIGC

二叉搜索树(BST)

贺公子之数据科学与艺术

#算法

MestReNova 中文版:解析和解释核磁共振(NMR)和质谱(MS)数据

Rose

MestReNova软件 MestReNova14破解版 核磁共振 医学研究

Axure RP 9 与其他原型设计工具的比较:为何它是您的最佳选择?

Rose

原型设计 Axure RP 9汉化 Axure RP 9授权码

文心一言变身虚拟患者,助力医学生轻松开启「实践模式」

飞桨PaddlePaddle

百度 paddle 百度飞桨 开发者说 文心一言

测试管理进阶 | 快速掌握高效沟通的汇报技巧

测吧(北京)科技有限公司

测试

资深项目管理者教你快速掌握高效沟通的汇报技巧

霍格沃兹测试开发学社

有道QAnything背后的故事---关于RAG的一点经验分享

有道技术团队

语言 & 开发 #开源

把简单留给用户,把复杂交给 AI

Kyligence

大数据 AI 数据治理 指标平台

Module2作业

大鹏

哪里有office2016安装包?office2016下载含激活工具

Rose

office办公套件 office2016

软件测试学习笔记丨 k8s环境部署实战

测试人

软件测试 测试开发

英特尔x爱立信:以开放式移动网络加速未来关键领域数字化转型

E科讯

HubSpot 使用 Apache Kafka 泳道实现工作流操作的实时处理_实时计算_InfoQ精选文章