NameServer:
Broker:
Topic: topic就是一个消息主题,是一个逻辑概念,实际包含多个属于同一个topic下的消息。在rocketmq中,一个topic会分片到多个broker上,且在每个broker上继续分片成多个Queue,如下图。
分片到多个broker上是为了突破单点的资源限制(CPU、带宽、内存等),从而实现水平扩展。 分片到多个Queue上是为了负载均衡,rockermq限制了对于N个Queue,只允许<N的Consumer来访问,且这些Consumer会均衡到各个Queue上。
此外,topic对应的消息数据并非真的消息数据,而是指向物理数据的消息索引。
Producer: 生产者,主要用于推送数据,并且有一些默认的定时任务(比如定期获取broker)
Consumer: 消费者,拉模式,定期(!while(this.isStopped(){拉消息})从broker上拉取可消费信息。拉取时机由Rebalance均衡器进行平衡控制。
参考 消息存储详解 概念模型 rocketmq重点记录 《RocketMQ技术内幕》