RocketMQ消息轨迹-设计篇

RocketMQ 消息轨迹主要包含两篇文章:设计篇与源码分析篇,本节将详细介绍RocketMQ消息轨迹-设计相关。

RocketMQ消息轨迹,主要跟踪消息发送、消息消费的轨迹,即详细记录消息各个处理环节的日志,从设计上至少需要解决如下三个核心问题:

  • 消费轨迹数据格式
  • 记录消息轨迹(消息日志)
  • 消息轨迹数据存储在哪?

1、消息轨迹数据格式

RocketMQ4.5版本消息轨迹主要记录如下信息:

  • traceType
    跟踪类型,可选值:Pub(消息发送)、SubBefore(消息拉取到客户端,执行业务定义的消费逻辑之前)、SubAfter(消费后)。
  • timeStamp
    当前时间戳。
  • regionId
    broker所在的区域ID,取自BrokerConfig#regionId。
  • groupName
    组名称,traceType为Pub时为生产者组的名称;如果traceType为subBefore或subAfter时为消费组名称。
  • requestId
    traceType为subBefore、subAfter时使用,消费端的请求Id。
  • topic
    消息主题。
  • msgId
    消息唯一ID。
  • tags
    消息tag。
  • keys
    消息索引key,根据该key可快速检索消息。
  • storeHost
    跟踪类型为PUB时为存储该消息的Broker服务器IP;跟踪类型为subBefore、subAfter时为消费者IP。
  • bodyLength
    消息体的长度。
  • costTime
    耗时。
  • msgType
    消息的类型,可选值:Normal_Msg(普通消息),Trans_Msg_Half(预提交消息),Trans_msg_Commit(提交消息),Delay_Msg(延迟消息)。
  • offsetMsgId
    消息偏移量ID,该ID中包含了broker的ip以及偏移量。
  • success
    是发送成功。
  • contextCode
    消费状态码,可选值:SUCCESS,TIME_OUT,EXCEPTION,RETURNNULL,FAILED。

2、记录消息轨迹

消息中间件的两大核心主题:消息发送、消息消费,其核心载体就是消息,消息轨迹(消息的流转)主要是记录消息是何时发送到哪台Broker,发送耗时多少时间,在什么是被哪个消费者消费。记录消息的轨迹主要是集中在消息发送前后、消息消费前后,可以通过RokcetMQ的Hook机制。通过如下两个接口来定义钩子函数。

通过实行上述两个接口,可以实现在消息发送、消息消费前后记录消息轨迹,为了不明显增加消息发送与消息消费的时延,记录消息轨迹最好使用异步发送模式。

3、如何存储消息轨迹数据

消息轨迹需要存储什么消息以及在什么时候记录消息轨迹的问题都以及解决,那接下来就得思考将消息轨迹存储在哪里?存储在数据库中或其他媒介中,都会加重消息中间件,使其依赖外部组件,最佳的选择还是存储在Broker服务器中,将消息轨迹数据也当成一条消息存储到Broker服务器。

既然把消息轨迹当成消息存储在Broker服务器,那存储消息轨迹的Topic如何确定呢?RocketMQ提供了两种方法来定义消息轨迹的Topic。

  • 系统默认Topic
    如果Broker的traceTopicEnable配置设置为true,表示在该Broker上创建topic名为:RMQ_SYS_TRACE_TOPIC,队列个数为1,默认该值为false,表示该Broker不承载系统自定义用于存储消息轨迹的topic。
  • 自定义Topic
    在创建消息生产者或消息消费者时,可以通过参数自定义用于记录消息轨迹的Topic名称,不过要注意的是,rokcetmq控制台(rocketmq-console)中只支持配置一个消息轨迹Topic,故自定义Topic,在目前这个阶段或许还不是一个最佳实践,建议使用系统默认的Topic即可。

通常为了避免消息轨迹的数据与正常的业务数据混合在一起,官方建议,在Broker集群中,新增加一台机器,只在这台机器上开启消息轨迹跟踪,这样该集群内的消息轨迹数据只会发送到这一台Broker服务器上,并不会增加集群内原先业务Broker的负载压力。

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

红帽加速开放混合云创新,助力企业成功迈向开源应用时代

2020年的开局让人有些意想不到,一场新冠疫情给人们的生活带来了前所未有的改变。对于企业更是有着数不尽的困难与挑战。在过去的三个月当中,全世界都面临着有关于“虚拟会议”所带来的便捷与隐患问题,原因在于虚拟会议中对于网络体验与安全的…

ETL异构数据源Datax_自增ID增量同步_12

文章目录增量同步方法 1.先同步存量数据 2.再同步增量数据(根据自增ID、日期条件) 前提条件: 1.只针对数据增长,如果老数据被update/delete则无法使用增量同步方式。 基于主键自增ID增量同步 Oracle同步Mysql演示 idno采用序列自增 添加项目 AutoIncr…

K8S从懵圈到熟练 - 节点下线姊妹篇

之前分享过一例集群节点NotReady的问题。在那个问题中,我们的排查路劲,从K8S集群到容器运行时,再到sdbus和systemd,不可谓不复杂。那个问题目前已经在systemd中做了修复,所以基本上能看到那个问题的几率是越来越低了。…

PLSQL 查询结果只显示年月日不显示时分秒的解决方法

PLSQL 14查询结果只显示年月日不显示时分秒的解决方法 如果plsql里面日期显示出现混乱,并且按照一般的调整首选项里日期格式调整不了,可以修改环境变量,新建环境变量,变量名:nls_date_format 变量值:YYYY-…

阿里云“网红“运维工程师白金:做一个平凡的圆梦人

他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名“辟拾(P10)”; 他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路; 他爱好清奇,练就了…

巧用 Trie 树,实现搜索引擎关键词提示功能

来源 | 码海责编 | Carol封图 | CSDN 付费下载于视觉中国我们几乎每天都在用搜索引擎搜索信息,相信大家肯定有注意过这样一个细节:当输入某个字符的时候,搜索引框底下会出现多个推荐词,如下,输入「python」后,底下会出…

这一团糟的代码,真的是我写的?!

阿里妹导读:你有没有遇到过这种情况:过几周或者几个月之后,再看到自己写的代码,感觉一团糟,不禁怀疑人生?我们每天都与代码打交道,但当被问道什么是好的代码时,很多人可能会先愣一下…

迅雷下载Linux Oracle11gR2和Oracle12c

很多朋友分享的都是百度云盘链接,那个下载速度对于贫民来说,真的是等到花都谢了 而Oracle官网现在只能下载Oracle19C了,特此分享11和12版本的迅雷下载链接 11g下载链接: https://download.oracle.com/otn/linux/oracle11g/R2/lin…

除了吃月饼,中秋节还能干啥?

明天 八月十五,团圆夜 花好月圆之际 除了吃月饼,还能干啥? 阿里妹带来双重好礼,陪你过中秋~ (往下看,送云栖大会三日通票哦) 1重礼 — 阿里技术热门精选 — 《Java 开发手册》发布&#…

恭喜了!5 月逼自己学下这项技能,年薪 35 万起

你觉得 15 年内自己所在的 IT 行业很安全吗?No!据麦肯锡全球研究院发布的一份就业报告中显示,到 2030 年,中国预计将有 1200 万~ 1.02 亿人面临重新就业的局面。越来越多的人学习编程不再只是为了当程序员,…

Linux7/Redhat7/Centos7 安装Oracle 12C_系统安装_01

文章目录一、安装虚拟机1. 新建虚拟机2. 稍后安装3. 选择linux版本4. 安装位置5. 处理器配置6. 内存配置7. 网络配置8. 创建新磁盘9. 设置磁盘大小10. 选择镜像,完成二、虚拟机配置2.1. 重新启动2.2. 选择语言2.3. 设置时区2.4. 选择安装模式2.5. 自定义分区2.6. 接…

源码分析RocketMQ ACL实现机制

有关RocketMQ ACL的使用请查看上一篇《RocketMQ ACL使用指南》,本文从源码的角度,分析一下RocketMQ ACL的实现原理。 备注:RocketMQ在4.4.0时引入了ACL机制,本文代码基于RocketMQ4.5.0版本。 根据RocketMQ ACL使用手册&#xff0c…

Linux7/Redhat7/Centos7 安装Oracle 12C_配置IP、系统参数_02

文章目录一、基础配置1. 重新启动2. 安装VMware Tools3. 修改主机名4. 网络配置5. 重新加载网络二、配置系统参数2.1. 检查硬件环境2.2. 查看共享内存大小2.3. 创建用户和组2.4. 配置内核参数2.5. 配置资源限制2.6. 创建目录赋予权限2.7. 设置环境变量2.8. 映射配置三、基础关闭…

华为:跨过时艰,向未来

[中国,深圳,2020年5月18日] 华为公司第十七届全球分析师大会18日在深圳开幕。华为与来自全球的2000多名行业分析师,金融分析师,通讯、互联网、金融等行业意见领袖和媒体一起,以现场在线的方式,共同探讨在当…

阿里巴巴飞天大数据架构体系与Hadoop生态系统

很多人问阿里的飞天大数据平台、云梯2、MaxCompute、实时计算到底是什么,和自建Hadoop平台有什么区别。 先说Hadoop 什么是Hadoop? Hadoop是一个开源、高可靠、可扩展的分布式大数据计算框架系统,主要用来解决海量数据的存储、分析、分布式…

Linux7/Redhat7/Centos7 安装Oracle 12C_配置VNC远程安装数据库_03

文章目录1. yum安装VNC2. 在线安装时钟3. VNC配置4. 重新加载5. 加入开机自启动6. 启动vncserver7. vnc测试1. yum安装VNC # 在线安装vnc yum install tigervnc-server2. 在线安装时钟 # 在线安装时钟为了测试远程连接oracle主服务器图形化 yum install xclock3. VNC配置 # …

对不起,我把APP也给爬了

来源 | 凹凸数据责编 | Carol封图 | CSDN 付费下载于视觉中国最近群里很多小伙伴对爬取手机App和小程序感兴趣,今天本厨师将给大家呈现这道菜,供小伙伴们品尝。相信大家都对爬虫有一定的了解,我们爬PC端时候可以打开F12去观察url的变化&#…

从踩坑到填坑|淘宝Web 3D应用与游戏开发实战

导读:本文是淘宝前端技术专家——徐乾伟(烧鹅)分享的淘宝 Web 3D 应用与游戏开发实战,这个话题在业界被谈及得比较少。今天将会从移动、3D、游戏三种交叉的话题来和大家探讨。接下来和小编一起从初试 Web 3D、使用 WebGL、工作流相…

Warning: Missing charsets in String to FontSet conversion

当出现Warning: Missing charsets in String to FontSet conversion时 输入export LANGC即可解决

sstableloader工具使用及原理解析

sstableloader是cassandra提供的bulkload工具&#xff0c;可以将sstable文件导入到集群中。本文详细介绍其用法和实现原理。 用法 sstableloader工具在cassandra的bin目录下面&#xff0c;用法如下&#xff1a; bin/sstableloader <options> <dir_path> 具体的…