阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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:334428

评论

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

在 WSL2 上部署 PyTorch

DisonTangor

WSL2 Windows 10 PyTorch

开源一夏 | 23张图,4500字从入门到精通解释Redis

wljslmz

redis 开源 8月月更

华为云CDN&云视频通信专场:828低价购,CDN0.05元/GB起,短信0.006元/条起

sofiya

周一见!距离阿里巴巴开源开放周还有3天

阿里巴巴中间件

阿里云 开源

高项-第一章 信息化和信息系统(1)

索隆

项目管理 软考 笔记分享

开源一夏 | 一个裸机工程转FreeRTOS的实例

矜辰所致

开源 stm32 STM32CubeMX 8月月更 FreeRTOS

付费会员之我见-02(44/100)

hackstoic

商业模式 付费会员

[教你做小游戏] H5小游戏技术选型分析,低代码?小游戏框架?canvas或SVG?还能用React?

HullQin

CSS JavaScript html 前端 8月月更

直播预告 | 流程挖掘如何助力头部制造业实现千万级增长?

望繁信科技

什么数据库这么猛?5.6 版本刚开源一个半月,8.0 版本竟然就要启动了?| StoneDB 社区答疑第二期

StoneDB

MySQL 数据库 开源 StoneDB 8月月更

“似水无形” - 小程序化

FN0

小程序 容器化 轻应用

无影云电脑

六月的雨在InfoQ

无影云电脑 云电脑 8月月更

全链路灰度新功能:MSE 上线配置标签推送

阿里巴巴中间件

阿里云 微服务 云原生

他只是试图运用自己的能力,给这个领域带来改变

图灵教育

通信

“九章云极DataCanvas AI平台赋能厦门航空”荣获AI平台应用标杆案例

九章云极DataCanvas

人工智能

【真送礼物】1 分钟 Serverless 极速部署盲盒平台,自己部署自己抽!

阿里巴巴中间件

阿里云 Serverless 云原生

圆壹智慧创始人兼CEO 潘麓蓉:AI制药工业落地的痛点与前进方向

阿里云弹性计算

HPC 高性能计算 AI制药

中小微企业如何快速开发信息化系统

力软低代码开发平台

九章云极DataCanvas YLearn因果学习开源项目荣获“可信AI实践优秀案例”奖

九章云极DataCanvas

已有小程序应用转App的一种技术

Speedoooo

小程序 小程序容器 小程序转app

分布式系统接口用例自动回归实践

转转技术团队

接口测试

Beetle编译/部署自动化

转转技术团队

CI/CD

Spark Driver CPU 占用异常问题排查

观远数据

spark bug修复 #开源 8月月更

TDesign 设计资源大更新,产品经理和设计师都可以省心啦~

TDesign

设计 设计师

多核驱动时代的降维打击 英特尔异构混合架构破局之路

科技之家

“软件定义汽车”时代,车载生态安全运转需小程序化技术

Speedoooo

小程序 车联网 小程序容器 车载安全

实力上榜|海泰方圆跻身2022企业网络安全服务Top15

电子信息发烧客

参与 TDesign 收获了什么?听听社区贡献者怎么说

TDesign

设计 产品经理 设计师

前端食堂技术周刊第 49 期:Deno即将迎来重大变革、Blitz 2.0 Beta、Chrome删除HTTP/2服务端推送

童欧巴

JavaScript typescript deno

SpringBoot 整合 MyBatis

mybatis springboot 8月月更

诚邀|8月31日,【因果学习和决策优化挑战赛TOP10队伍作品秀】邀您共享因果学习智慧盛宴

九章云极DataCanvas

人工智能

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