RocketMQ的Broker支持哪些存储引擎?

RocketMQ的Broker支持多种存储引擎,主要有:

  • DefaultMessageStore:默认的文件存储引擎,消息存储在文件系统的CommitLog和ConsumeQueue文件中。
  • MappedFileMessageStore:能更高效利用磁盘空间的文件存储引擎,消息存储在内存映射文件的CommitLog和ConsumeQueue文件中。
  • LeakFileMessageStore:LiteMessageStore的漏洞修复版本,采用滑动窗口技术解决文件描述符溢出问题。
  • VMessgaeStore:基于内存的存储引擎,消息存储在堆内存中,适用于对延迟敏感的场景。
  • RocketsDBStore:采用RocksDB作为消息索引和消息存储的存储引擎。

除此之外,RocketMQ还支持开发者自定义消息存储引擎。主要涉及的对象有:

  • org.apache.rocketmq.store.config.MessageStoreConfig:消息存储配置类,用于设置存储路径、文件过期时间等。
  • org.apache.rocketmq.store.CommitLog:提交日志,消息首先写入CommitLog,然后写入ConsumeQueue。
  • org.apache.rocketmq.store.ConsumeQueue:消息消费队列,按照Topic与Queue ID组织消息。
  • org.apache.rocketmq.store.MessageExtBatch:消息批处理器,将消息写入存储引擎的接口实现。
  • org.apache.rocketmq.store.MessageStoreFactory:消息存储工厂,用于实例化消息存储引擎。

选择不同的存储引擎,可以获得不同的存储特点:

  • DefaultMessageStore:稳定且成熟,适用于大部分场景。
  • MappedFileMessageStore:更高IO效率,能更高效使用磁盘空间。
  • VMESSgaeStore:极低延迟,适用于对延迟敏感的场景。
  • RocketsDBStore:更高查询效率与更强的容错能力。

理解RocketMQ支持的各存储引擎与其特点,可以帮助我们根据业务需求选择最佳存储引擎使用。