面试题答案
一键面试核心组件及功能
- CommitLog:
- 功能:RocketMQ所有消息的物理存储文件,所有主题的消息都顺序写入到该文件。这样设计可以避免随机写磁盘带来的性能瓶颈,提升写入性能。CommitLog采用的是追加写的方式,极大地提高了写入效率,并且保证了消息的顺序性。
- ConsumeQueue:
- 功能:是消息的逻辑队列,每个主题下的每个队列都会有一个对应的ConsumeQueue文件。它存储了该队列中消息在CommitLog中的物理偏移量、消息大小、Tag的HashCode等信息。Consumer通过ConsumeQueue可以快速定位到消息在CommitLog中的位置,从而实现消息的快速消费。
- IndexFile:
- 功能:主要用于消息的索引,通过创建索引可以快速根据消息的Key或时间区间来查找消息。IndexFile为哈希表结构,其中包含了多个槽位(slot),每个槽位指向一个索引项(Index),索引项记录了消息的物理偏移量和时间戳等信息,方便快速定位和检索消息。