BrokerController分析

主要的类和作用

  • NettyRemotingServer: 网络协议处理
  • NettyRequestProcessor及其子类: 负责请求的处理
  • DefaultMessageStore: 存储层, 负责写入消息到CommitLog, 异步写入ConsummeQueue, 异步索引消息
  • CommitLog: 消息数据的写入和读取. 所有的消息都写入一个文件里.
  • ConsumeQueue: 消费者消息索引的写入和读取, ConsumeQueue对应着一个文件, 是 topic+queueId 维度的, 只有索引, 没有实际的数据.
  • ReputMessageService: 负责从CommitLog中读取数据, 调用Dispatcher链进行处理, ConsummeQueue 和 IndexFile 的构建就是通过注册到Dispatcher链实现的
  • MappedFile: 通过mapp方式实现的文件的读写
  • HAService: 主从同步的处理
  • ManyMessageTransfer/OneMessageTransfer/QueryMessageTransfer: 通过继承Netty FileRegion的方式实现zero copy
  • BrokerOuterAPI: broker 和 namesrv 交互的组件
  • ConsumerOffsetManager: offset的管理

特点

  1. 所有的topic的消息都是放在一个 CommitLog 里面的
  2. ConsumeQueue 的构建是异步进行的, 是 topic+queueId 维度的.
  3. 消费支持 zero copy.
  4. 可以自定义MessageStore的实现