文档章节

rocketmq 的索引策略

勇哥0_0
 勇哥0_0
发布于 2017/08/28 22:36
字数 385
阅读 18
收藏 1

IndexFile 存储具体消息索引的文件,文件的内容结构如图:

索引结构

索引文件由索引文件头IndexHeader, 槽位Slot和消息的索引内容三部分构成

IndexHeader:索引文件头信息40个字节的数据组成

输入图片说明

beginTimestamp 8位long类型,索引文件构建第一个索引的消息落在broker的时间

endTimestamp 8位long类型,索引文件构建最后一个索引消息落broker时间

beginPhyOffset 8位long类型,索引文件构建第一个索引的消息commitLog偏移量

endPhyOffset 8位long类型,索引文件构建最后一个索引消息commitLog偏移量

hashSlotCount 4位int类型,构建索引占用的槽位数(这个值貌似没有具体作用)

indexCount 4位int类型,索引文件中构建的索引个数

槽位slot, 默认每个文件配置的slot个数为500万个,每个slot是4位的int类型数据

计算消息的对应的slotPos=Math.abs(keyHash)%hashSlotNum

消息在IndexFile中的偏移量absSlotPos = IndexHeader.INDEX_HEADER_SIZE + slotPos *HASH_SLOT_SIZE

Slot存储的值为消息个数索引

消息的索引内容是20位定长内容的数据![输入图片说明]

     4位int值, 存储的是key的hash值

     8位long值     存储的是消息在commitlog的物理偏移量phyOffset

     4位int值        存储了当前消息跟索引文件中第一个消息在broker落地的时间差

     4位int值        如果存在hash冲突,存储的是上一个消息的索引地址

© 著作权归作者所有

勇哥0_0

勇哥0_0

粉丝 18
博文 10
码字总数 3141
作品 0
武汉
私信 提问
RocketMQ事务消息实现分析

这周RocketMQ发布了4.3.0版本,New Feature中最受关注的一点就是支持了事务消息: 今天花了点时间看了下具体的实现内容,下面是简单的总结。 RocketMQ事务消息概要 通过冯嘉发布的《RocketM...

杭州.Mark
2018/08/07
0
0
阿里RocketMQ如何解决消息的顺序&重复两大硬伤?

分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题: RocketMQ作为阿里开源的一款高性能、高吞吐量...

CHEN川
2017/03/21
0
0
《RocketMQ技术内幕:RocketMQ架构设计与实现原理》一导读

内容介绍 本书由RocketMQ社区早期的布道者和技术专家撰写,Apache RocketMQ创始人/Linux OpenMessaging创始人兼主席/Alibaba Messaging开源技术负责人冯嘉对其高度评价并作序推荐。 源码角度...

小编辑01
01/04
0
0
Kafka vs RocketMQ—— Topic数量对单机性能的影响

引言 上一期我们对比了三类消息产品(Kafka、RabbitMQ、RocketMQ)单纯发送小消息的性能,受到了程序猿们的广泛关注,其中大家对这种单纯的发送场景感到并不过瘾,因为没有任何一个网站的业务只...

a137268431
2018/04/15
0
0
深圳社区 | Apache RocketMQ开发者沙龙

活 动 流 程 嘉 宾 介 绍 演讲主题:《Apache RocketMQ 101》 个人简介:厉启鹏 Apache RocketMQ中国社区发起人,Linux OpenMessaging Advisory Board Member,阿里百年技术大学讲师。具有多...

ApacheRocketMQ社区
07/13
57
0

没有更多内容

加载失败,请刷新页面

加载更多

PCB设计-Allegro软件入门系列-allegro环境变量和快捷键

Allegro作为一款高速PCB设计的EDA软件,有完善的约束规则设计和信号完整性电源完整性仿真等各种专业工具深受电子行业从业者喜爱。 对于该软件来说,电子从业者接触最多的就是Allegro的画板功...

demyar
25分钟前
4
0
腾讯云存储

1、进入腾讯云平台,创建 2、进入配置查看域名 3、查看KEY参数 4、将2、3中的参数录入到cms后台 然后点测试按钮查看情况

迅睿CMS-PHP开源CMS程序
26分钟前
4
0
ES 6.x 版本 待验证的CURL命令查询操作

1. 查询数据 curl -H "Content-Type: application/json" -XGET http://elastic:123456@127.0.0.1:9200/alias1/_search -d '{"query": {"match_all": {}}}' 2. 添加数据 如果有不指定ID可以自......

coord
34分钟前
4
0
如何写好论文摘要:研究人员不得不知的小秘诀

我们为何要写摘要? 它的目的为何? 简而言之,摘要的目的就是简单的讨论这篇文章让读者更容易的了解这篇文。 它能在读者与作者之间搭起一条桥梁。当您搜索信息时,您无法一下阅读整篇文章,...

论文辅导员
37分钟前
4
0
移动端、PC端(前后台)、小程序常用的UI框架

移动端、PC端(前后台)、小程序常用的UI框架 1.移动端UI库 ①.Vant UI 官方地址:https://youzan.github.io/vant/#/zh-CN/intro github地址:https://github.com/youzan/vant 优点:用来做移...

jason_kiss
37分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部