面试题答案
一键面试- CommitLog:
- 所有消息的物理存储文件,顺序写入,将所有主题的消息都存储在一起,这样可以利用操作系统的页缓存,提升写入性能。
- 每个文件大小固定为1G,文件名是该文件第一条消息的物理偏移量。
- ConsumeQueue:
- 是消息消费队列的逻辑结构,为每个Topic的每个Queue都有对应的ConsumeQueue文件。
- 存储指向CommitLog中消息的物理偏移量、消息长度和消息Tag的HashCode等信息,方便消费者快速定位消息在CommitLog中的位置,实现快速消费。
- IndexFile:
- 主要用于消息的快速查询,为了方便通过消息的Key或时间区间来查找消息。
- 每个IndexFile文件固定大小为40M,通过哈希表结构记录消息的Key与对应的物理偏移量,同时还记录了索引项的时间,以支持时间范围查询。