速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

HubSpot 是如何监控 Kafka 的性能的

  • 2015-10-11
  • 本文字数:929 字

    阅读完需:约 3 分钟

Sidekick 是数字营销公司 HubSpot 的一款产品,用于在接收者打开邮件时实时通知发送者。创建和发送通知的基础设施以 Kafka 为基础创建。 Ze’ev Klapow 是 Sidekick 基础设施团队的一名资深软件工程师。近日,他撰文介绍了他们如何在Sidekick 中监控Kafka 的性能。

Sidekick 通知管道的架构大致如下:

Ze’ev 指出,像上图这样就许多 Kafka 消费者连接在一起,需要监控每个消费者的性能,而且需要在消费者出现问题时快速定位。为此,他们开发了如下两个指标。

“增量(Delta)”

该指标用于确定消费者是否能够跟上某个主题的数据生成速度,如下图所示:

在 Kafka 中,每条消息会发送到某个主题的一个分区上,每条消息在写入时会获得一个递增的偏移量数值。消费者在消费消息时会记录它消费的最后一条消息的偏移量。增量即是该偏移量与分区头之前差异。对于每个 Kafka 消费者,他们会记录如下两个增量数据:

  • 增量总和为所有分区的增量之和。增量总和增加说明消费者太慢或数据量太大,可以考虑扩展消费者,或者增加并发。
  • 最大增量为所有分区中的最大增量。最大增量增加说明只有一个工作进程出现问题,或者分区之间没有实现很好的负载均衡。

“延迟(Lag)”

该指标用于监控消息处理延迟。在 Sidekick 中,他们会在所有的消息上都存储一个时间戳。如下图所示,总延迟为事件创建和通知发送之间的时间,可以帮助他们监控整个管道:

另外,如下图所示:

他们还可以进行更细粒度地延迟监控,这有助于在总延迟开始偏离正常轨道时进行调试。

按照 Ze’ev 的说法,上述两个指标提供了系统健康状况的一个完整视图。当消费者出现问题时,他们首先会依据下表进行问题判断:

Δ↑

情况糟糕!

有地方出现问题了。

情况可能并不坏。

增量增加但延迟稳定可能代表流量峰值或类似的问题。

Δ↑ 增量没有增加,但延迟增加。

可能是该消费者的上游存在问题。

一切正常!

复制代码
**LAG↑**

LAG↓

Ze’ev 表示,当出现问题时,此表可以为问题调试指明方向;当没有问题时,此表可以让他们对系统的性能更加自信。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-10-11 19:003135
用户头像

发布了 1008 篇内容, 共 392.6 次阅读, 收获喜欢 344 次。

关注

评论

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

Python Qt GUI设计:UI界面可视化组件、属性概述(基础篇—4)

不脱发的程序猿

Python qt GUI设计 PyQt5

大厂敲门砖!P9技术官级别的顶级并发编程宝典,献给想去大厂的你

Java 编程 面试 程序人生 p9

网卡修改网速和buffer

耳东@Erdong

9月日更 网卡

设计模式类型

一个大红包

9月日更

MySQL + Keepalived 双主热备搭建

Se7en

坍缩的企业

涛哥 数字产品和业务架构

企业架构

MySQL五个常见的高可用方案

hanaper

全球国家简码信息表

入门小站

工具

spine动画文件转dragonbones骨骼文件

风翱

9月日更 dragonbones

linux之chattr命令

入门小站

Linux

如何PWA构建现代离线应用程序

devpoint

Service Worker 9月日更

架构训练营 模块7 - 王者荣耀商城异地多活架构设计

sophiahuxh

分分合合分分,谷歌医疗走向大败退

脑极体

自定义aop实现Cacheable注解(零拷贝), CacheItemGet,CacheMapGet,CacheMapPut

张音乐

Java 缓存 注解 9月日更

ebay支付账务系统架构解析之“读”一无二

贾奇 (Jacky)

支付系统 CQRS 读写分离

HTML进阶(二)

Augus

html 9月日更

区块链技术解决信任问题

CECBC

java拼团小程序源码(毕设)

清风

毕业设计

如何从数据到资产

奔向架构师

数据治理 9月日更

网络攻防学习笔记 Day132

穿过生命散发芬芳

网络模型 9月日更

简单五步:给你的 Golang 应用加一个 GUI ( Electron 驱动)

baiyutang

UI 跨平台 Go 语言 GUI 9月日更

从零到MySQL架构师学习内容整理

hanaper

快速上手Apache POI

卢卡多多

POI Apache POI 9月日更

KVM虚拟机常用管理命令

玏佾

kvm 虚拟主机

GraphQL 快速入门【1】简介

码语者

Rest graphql

【网络安全】Spring框架漏洞总结(一)

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

Python——内置函数----让你偷懒的工具

在即

9月日更

编程基础:CPU资源监控

正向成长

CPU调度

一文说清BIO、NIO、AIO不同IO模型演进之路

慕枫技术笔记

后端 引航计划

计算机工业的生态链(三)

姬翔

9月日更

测试模型中理解压力测试和负载测试

FunTester

性能测试 接口测试 压力测试 FunTester 负载测试

HubSpot是如何监控Kafka的性能的_语言 & 开发_谢丽_InfoQ精选文章