RocketMQ中broker消息存储架构是怎么样的

这篇文章主要为大家展示了“RocketMQ中broker消息存储架构是怎么样的”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“RocketMQ中broker消息存储架构是怎么样的”这篇文章吧。一个broker下所有topic的消息都顺序存储在同一个数据日志文件(commit log file)中。同时broker还维护了一个索引文件(index file)记录了msg key的反向索引关系,用于从key查找所有关联的msgs。对于消费端,broker会为每个topic下的子队列创建一个逻辑消费队列(ConsumeQueue),ConsumeQueue中存储的元素具有固定的20字节的长度,是一个指向commitlog中消息实体的指针。每个consumer的消费进度offset本质上就是ConsumeQueue中元素的index,能够通过commitlog offset获得具体的消息体。br 香港云主机oker在接收到producer发送的消息时,首先会把消息添加到commitlog文件的末尾,通过同步或者异步的方式刷盘。后续会有一个ReputMessageService的线程异步构建ConsumeQueue以及IndexFile。核心的存储文件如下图:broker的消息存储架构按依赖关系可以划分为以下层次:其中,MappedFileQueue/MappedFile封装了底层的文件读写接口。RocketMQ使用JDK NIO中的MappedByteBuffer/FileChannel来使用操作系统的文件映射服务,将一个大文件直接映射到一个内存地址空间中。通过内存的读写实现了文件的读写操作,避免了数据从内核态向用户态的拷贝。MappedFile代表的就是一个被切分成固定大小的日志文件(commitlog默认切分大小为1G,文件名为该分片首字节在整个commitlog中的偏移)。多个MappedFile组成一个MappedFileQueue,形成一个完整的日志文件的视图。消息存储核心实现类如下图:DefaultMessageStore是整个存储子系统的入口,提供了消息写入/读取/查询的方法,并通过后台线程异步构建ConsumeQueue和IndexFile两个关键数据结构。以上是“RocketMQ中broker消息存储架构是怎么样的”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注开发云行业资讯频道!

相关推荐: InfluxDB的安装及基本使用方法

本篇内容主要讲解“InfluxDB的安装及基本使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“InfluxDB的安装及基本使用方法”吧!InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 09/23 19:05
下一篇 09/23 19:05

相关推荐

发表评论

您的电子邮箱地址不会被公开。