当前位置:首页 > 科技  > 软件

从 Pulsar Client 的原理到它的监控面板

来源: 责编: 时间:2023-08-05 11:44:50 5446观看
导读背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,比如速率、流量、消费状态等信息。但也有几

ypK28资讯网——每日最新资讯28at.com

背景

前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。ypK28资讯网——每日最新资讯28at.com

虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,比如速率、流量、消费状态等信息。ypK28资讯网——每日最新资讯28at.com

图片ypK28资讯网——每日最新资讯28at.com


ypK28资讯网——每日最新资讯28at.com

ypK28资讯网——每日最新资讯28at.com

ypK28资讯网——每日最新资讯28at.com

本文重点不在于此,具体代码就不仔细分析了。ypK28资讯网——每日最新资讯28at.com

从上图可以看出,如果我们想要监控消费是否存在阻塞的情况,这几个内部队列是需要重点监控的,一旦他们出现堆积,那就会出现消费阻塞。ypK28资讯网——每日最新资讯28at.com

其实这些数据都可以通过。ypK28资讯网——每日最新资讯28at.com

org.apache.pulsar.client.api.ProducerStatsorg.apache.pulsar.client.api.ConsumerStats

这两个接口获取到生产者和消费者的大部分指标,只是这里还有一个小插曲。ypK28资讯网——每日最新资讯28at.com

那就是在获取消费者队列大小的时候,获取到的数据一直为空。ypK28资讯网——每日最新资讯28at.com

最终经过源码排查,原来是我们大量使用的 messageListener 在获取队列大小时有 bug,导致获取到的数据一直都为 0.ypK28资讯网——每日最新资讯28at.com

相关的 issue 和 PR 可以在这两个链接查看,问题原因和修复过程都有具体描述:https://github.com/apache/pulsar/issues/20076 https://github.com/apache/pulsar/pull/20245ypK28资讯网——每日最新资讯28at.com

但这个修复得在新版本才能使用,就导致我们现在的监控页面一直显示为空。ypK28资讯网——每日最新资讯28at.com

开发 SkyWalking 插件

然后就是开发一个 SkyWalking 的插件了,其实直接使用 SW 开发插件是上手 Java-Agent 比较快的方式。ypK28资讯网——每日最新资讯28at.com

SW 的 SDK 封装了许多 agent 原生接口,使得开发起来非常容易;当然缺点也有,就是得集成整个 SW 的 agent。ypK28资讯网——每日最新资讯28at.com

这里我简单介绍下这个插件的运行流程:ypK28资讯网——每日最新资讯28at.com

ypK28资讯网——每日最新资讯28at.com

  • 在创建和删除 consumer 的时候维护 consumerPool
  • 启动一个定时任务,定期从这些 consumer 中获取指标数据。

ypK28资讯网——每日最新资讯28at.com

ypK28资讯网——每日最新资讯28at.com

当消费多分区 topic 时,为了能唯一标志一个 consumer,所以给每个消费者都加了一个 hashcode 的 label。ypK28资讯网——每日最新资讯28at.com

因为我们所有的 Java 技术栈都是使用的 Prometheus 的包来生成 metrics ,所以该插件也是使用该包生成的数据。ypK28资讯网——每日最新资讯28at.com

<dependency>    <groupId>io.prometheus</groupId>    <artifactId>simpleclient</artifactId>    <version>0.12.0</version>    <scope>provided</scope>  </dependency>

为了兼容一些特殊 Java 应用没有该包时会启动报错,所以在初始化插件的时候需要检测当前 classpath 下是否存在该依赖。ypK28资讯网——每日最新资讯28at.com

ypK28资讯网——每日最新资讯28at.com

这些功能 SW 已经封装好了,对我们来说也是开箱即用。ypK28资讯网——每日最新资讯28at.com

其实 SW 插件自己也是支持 metrics 的,由于我们只是使用了它的 trace 功能,所以这里就没有使用它的 API。ypK28资讯网——每日最新资讯28at.com

关于开发一个 SW 插件的流程也比较简单,可以参考官方文档或者是一些现成的插件源码。https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/java-plugin-development-guide/ypK28资讯网——每日最新资讯28at.com

总结

有了这个监控面板后,对于 Pulsar 客户端内部的一些运行情况就不再是黑盒了,还可以基于此做一些报警,比如消费堆积、发送延迟过大等。ypK28资讯网——每日最新资讯28at.com

当然仅仅只有这个面板依然是不够的,后续我们又开发了可以通过 messageId 查询它的整个生命周期,包括:ypK28资讯网——每日最新资讯28at.com

  • 生产者、消费者信息
  • 消息生产时间
  • 推送时间
  • ack 时间等

ypK28资讯网——每日最新资讯28at.com

同时借助与 Pulsar-SQL 的能力,还能以列表的形式展示当前 topic 的消息列表。ypK28资讯网——每日最新资讯28at.com

ypK28资讯网——每日最新资讯28at.com

当然在实现这两个功能的同时也踩了不少坑,提了几个 PR ,后面在抽时间做具体的分享。ypK28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-91-0.html从 Pulsar Client 的原理到它的监控面板

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 一年经验在二线城市面试后端的经验分享

下一篇: 三言两语说透设计模式的艺术-单例模式

标签:
  • 热门焦点
  • 红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • 6月安卓手机性能榜:vivo/iQOO霸占旗舰排行榜前三

    2023年上半年已经正式过去了,我们也迎来了安兔兔V10版本,在新的骁龙8Gen3和天玑9300发布之前,性能榜的榜单大体会以骁龙8Gen2和天玑9200+为主,至于那颗3.36GHz的骁龙8Gen2领先
  • 从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • 如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之&ldquo;想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!&rdquo;曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 自律,给不了Keep自由!

    来源 | 互联网品牌官作者 | 李大为编排 | 又耳 审核 | 谷晓辉自律能不能给用户自由暂时不好说,但大概率不能给Keep自由。近日,全球最大的在线健身平台Keep正式登陆港交所,努力
  • Counterpoint :OPPO双旗舰战略全面落地 高端产品销量增长22%

    2023年6月30日,全球行业分析机构Counterpoint Research发布的《中国智能手机高端市场白皮书》显示,中国智能手机品牌正在寻求高质量发展,中国高端智能
  • 朋友圈可以修改可见范围了 苹果用户可率先体验

    近日,iOS用户迎来微信8.0.27正式版更新,除了可更换二维码背景外,还新增了多项实用功能。在新版微信中,朋友圈终于可以修改可见范围,简单来说就是已发布的朋友圈
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top