作者:文婷、不周

引言: 本篇文章首要介绍 RocketMQ 的可观测性东西在线上出产环境的最佳实践。RocketMQ的可观测性才干领先业界同类产品,RocketMQ 的 Dashboard 和音讯轨道等功用为事务中心链路保驾护航,有用应对线上大规模出产使用过程中遇到的容量规划、音讯收发问题排查以及自定义监控等场景。

音讯行列简介

进入主题之前,首要扼要介绍下什么是阿里云的音讯行列?

阿里云供给了丰厚的音讯产品家族,音讯产品矩阵涵盖了互联网、大数据、物联网等各个事务场景的范畴,为云上客户供给了多维度可选的音讯解决方案。不管哪一款音讯行列产品,中心都是协助用户解决事务和体系的异步、解耦以及应对流量洪峰时的削峰填谷,一起具有散布式、高吞吐、低推迟、高可扩展等特性。

可是不同的音讯产品在面向客户事务的应用中也有不同的侧重。简略来做,音讯行列 RocketMQ 是事务范畴的首选音讯通道;Kafka 是大数据范畴不可或缺的音讯产品;MQTT 是物联网范畴的音讯解决方案;RabbitMQ 侧重于传统事务音讯范畴;云原生的产品集成和事情流通道是经过音讯行列 MNS 来完结;最后事情总线 EventBridge 是一个阿里云上的一个事情纽带,统一构建事情中心。

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

本篇首要讲的是事务范畴的音讯首选通道:音讯行列 RocketMQ。RocketMQ 诞生于阿里的电商体系,具有高性能、低推迟、削峰填谷等才干,并且供给了丰厚的在事务和音讯场景上应对瞬时流量洪峰的功用,被集成在用户的中心事务链路上。

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

作为一个中心事务链路上的音讯,就要求 RocketMQ 具有十分高的可观测性才干,用户能经过可观测性才干及时的监控定位反常动摇,一起对具体的事务数据问题进行排查。由此,可观测性才干逐步成为音讯行列 RocketMQ 的中心才干之一。

那么什么是可观测才干呢?下面简略对可观测才干进行介绍。

可观测才干

说到可观测才干,咱们或许最先想到的是可观测的三要素:Metrics(目标)、Tracing(追踪)和 Logging(日志)。

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

结合音讯行列的理解,可观测才干三要素的细化解说如下:

Metrics:Dashborad 大盘

1)目标涵盖丰厚: 包括音讯量、堆积量、各个阶段耗时等目标,每个目标从实例、Topic、消费 GroupID 多维度做聚合和展现;

2)音讯团队最佳实践模板: 为用户供给最佳模板,特别是在杂乱的消费音讯场景,供给了丰厚的目标协助快速定位问题,并继续迭代更新;

3)Prometheus + Grafana: Prometheus标准数据格式、使用Grafana展现,除了模板,用户也能够自定义展现大盘。

Tracing:音讯轨道

1)OpenTelemetry tracing标准: RocketMQ tracing 标准现已合并到 OpenTelemetry 开源标准,规范和丰厚 messaging tracing 场景定义;

2)音讯范畴定制化展现: 依照音讯维度重新组织抽象的恳求 span 数据,展现一对多的消费,屡次消费信息,直观、便利理解;

3)可联接 tracing链路上下流: 音讯的 tracing 可继承调用上下文,补充到完好调用链路中,音讯链路信息串联了异步链路的上游和下流链路信息。

Logging:客户端日志标准化

1)Error Code标准化: 不同的错误有仅有的 error code;

2)Error Message 完好: 包括完好的错误信息和排序所需要的资源信息;

3)Error Level 标准化: 细化了各种不同错误信息的日志等级,让用户依据 Error、Warn 等等级配置更合适和监控告警。

了解音讯行列和可观测才干的基础概念,让咱们来看看当音讯行列 RocketMQ 遇到可观测,会产生什么样的火花?

RocketMQ 的可观测性东西的概念介绍

从上文的介绍中能够看到 RocketMQ 的可观测才干能够协助用户依据错误信息排查音讯在出产和消费过程中哪些环节出了问题,为了协助咱们更好的理解功用的应用,先扼要介绍下音讯出产消费流程过程中的一些概念。

音讯出产和消费流程概念

首要咱们先明确以下几个概念:

  • Topic:音讯主题,一级音讯类型,经过Topic对音讯进行分类;

  • 音讯(Message):音讯行列中信息传递的载体;

  • Broker:音讯中转角色,担任存储音讯,转发音讯;

  • Producer:音讯出产者,也称为音讯发布者,担任出产并发送音讯;

  • Consumer:音讯顾客,也称为音讯订阅者,担任接纳并消费音讯。

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

音讯出产和消费的流程简略来说就是出产者将音讯发送到 topic 的 MessageQueue 上进行存储,然后顾客去消费这些 MessageQueue 上的音讯,如果有多个顾客,那么一个完好的一次音讯出产产生的生命周期是什么姿态的?

这里咱们以守时音讯为例,出产者 Producer 发送音讯经过必定的耗时抵达 MQ Server,MQ 将音讯存储在 MessageQueue,这时行列中有一个存储时刻,如果是守时音讯,还需要经过必定的守时时刻之后才干被顾客消费,这个时刻就是音讯安排妥当的时刻;经过守时的时刻后顾客 Consumer 开端消费,顾客从 MessageQueue 中拉取音讯,然后经过网络的耗时之后抵达顾客客户端,这时候不是低码进行消费的,会有一个等候顾客资源线程的过程,等到顾客的线程资源后才开端进行真正的事务音讯处理。

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

从上面的介绍中能够看出,事务音讯有必定的耗时处理,完结之后才会向服务端回来ack的成果,在整个出产和消费的过程中,最杂乱的就是消费的过程,因为耗时等原因,会经常有音讯堆积的场景,下面来要点看一下在音讯堆积场景下各个目标表明的意义。

音讯堆积场景

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

如上图,音讯行列中,灰色部分的音讯表明是已完结的音讯量,就是顾客已处理完结并回来 ack 的音讯;橙色部分的音讯表明这些音讯现已被拉取到顾客客户端,正在被处理中,可是还没有回来处理成果的音讯,这个音讯其实有一个十分重要的目标,就是音讯处理耗时;最后绿色的音讯表明这些音讯在现已产生的 MQ 行列中已存储完结,并且现已是可被顾客消费的一个状态,称为已安排妥当的音讯。

已安排妥当音讯量(Ready messages):

意义:已安排妥当音讯的音讯的条数。

效果:音讯量的巨细反映还未被消费的音讯规模,在顾客反常状况下,安排妥当音讯量会变多。

音讯排队时刻(Queue time)

意义:最早一条安排妥当音讯的安排妥当时刻和当时时刻差。

效果:这个时刻巨细反映了还未被处理音讯的时刻推迟状况,对于时刻灵敏的事务来说是十分重要的度量目标。

RocketMQ 的可观测性东西的功用介绍

结合上文介绍的音讯行列 RocketMQ 可观测概念,下面具体对 RocketMQ 的可观测性东西的两个中心功用进行介绍。

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

可观测功用介绍 – Dashboard

Dashboard 大盘能够依据各种参数检查指定的目标数据,首要的目标数据包括下面三点:

1)Overview(概览):

  • 检查实例据总的音讯收发量、TPS、音讯类型散布状况。
  • 检查是的各个目标当时的散布和排序状况:发送音讯量最多的 Topic、消费音讯量最多的 GroupID、堆积音讯量最多的 GroupID、排队时刻最长的 GroupID 等。

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

2)Topic(音讯发送):

  • 检查指定 Topic 的发送音讯量曲线图。
  • 检查指定 Topic 的发送成功率曲线图。
  • 检查指定 Topic 的发送耗时曲线图。

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

3)GroupID(音讯消费):

  • 检查指定 Group 订阅指定 Topic 的音讯量曲线图。
  • 检查指定 Group 订阅指定 Topic 的消费成功率。
  • 检查指定 Group 订阅指定 Topic 的消费耗时等目标。
  • 检查指定 Group 订阅指定 Topic 的音讯堆积相关目标。

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

可观测功用介绍 – 音讯轨道

在 Tracing 方面供给了音讯轨道功用,首要包括以下三方面才干:

1)便捷的查询才干: 可依据音讯基本信息查询相关的轨道;二期还能够依据成果状态、耗时时长来过滤查询,过滤出有用轨道快速定位问题。

2)具体的 tracing 信息: 除了各个生命周期的时刻和耗时数据,还包括了出产者、顾客的账号和机器信息。

3)优化展现效果: 不同的音讯类型轨道;多个消费 GroupID 的场景;同个消费 GroupID 屡次重投的场景等。

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

最佳实践

场景一:问题排查

1)目标: 音讯出产消费健康状况

2)原则

  • 一级目标:用来报警的目标,公认的没有贰言的目标。

  • 二级目标:一级目标产生改变的时候,经过检查二级目标,能够快速定位问题的原因地点。

  • 三级目标:定位二级目标动摇原因。依据各自事务的特色和经历添加。

基于目标和原则,出产者用户和顾客用户问题排查和分析方式如下:

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

场景二:容量规划

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

容量规划场景下只要解决下面三个问题:

1)问题一:怎样评估实例容量?

解决方法:

  • 实例详情页》检查指定实例数据计算,能够看到所选时刻段内的最大音讯收发的 TPS 峰值。

  • 铂金版实例能够依据这个数据来添加报警监控和判别事务。

2)问题二:怎样检查标准版实例的耗费

解决方法:

  • 能够检查概览总音讯量模块

3)问题三:有哪些已下线,需要清理资源?

解决方法:

  • 指定一段时刻内(例如近一周),按 Topic 的音讯发送量由小到大排序,检查是否有音讯发送量为 0 的 Topic,这些 Topic 相关的事务或许已下线。

  • 指定一段时刻内(例如近一周),按 GroupID 的音讯消费量由小到大排序,检查是否有音讯消费量为 0 的 GroupID,这些 GroupID 相关的事务或许已下线。

场景三:事务规划

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

事务规划场景下首要解决以下三个问题:

1)问题一:怎么检查事务峰值散布状况?

解决方法:

  • 检查 Topic 音讯接纳量的每天的高峰时刻段。
  • 检查 Topic 音讯接纳量周末和非周某的音讯量不同。
  • 检查 Topic 音讯接纳量节假日的改变状况。

2)问题二:怎么判别现在哪些事务有上升趋势?

解决方法:

  • 检查音讯量辅助判别事务量改变趋势。

3)问题三 :怎样优化顾客体系性能?

解决方法:

  • 检查音讯处理耗时,判别是否在合理规模内有提高的空间。

本篇文章经过音讯行列、可观测才干、RocketMQ 可观测概念及功用和最佳实践的介绍,呈现了 RocketMQ 的可观测性东西在事务中心链路上的可视化才干,希望给咱们在日常的线上的一些问题排查和运维过程中带来一些协助。

点击​​此处​​,体验 RocketMQ 的可观测性东西。