1.模型
2.消息模型
RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际 部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息,每个Topic 的消息也可以分片存储于不同的 Broker。Message Queue 用于存储消息的物理地 址,每个Topic中的消息地址存储于多个 Message Queue 中。ConsumerGroup 由多个Consumer 实例构成。
3.消费者
从用户应用的角度而言提供了两种消费形 式:拉取式消费、推动式消费。
RocketMQ 支持两种消息模式:集群消费 (Clustering)和广播消费(Broadcasting)。
集群消费模式下, 相同Consumer Group的每个Consumer实例平均分摊消息。 广播消费模式下,相同Consumer Group的每个Consumer实例都接收全量的消 息。
4.主题topic
Topic只是一个逻辑概念,并不实际保存消息。同一个Topic下的消息,会分片保 存到不同的Broker上,而每一个分片单位,就叫做MessageQueue。
5.nameserver
Namesrv实例组成集群,但相互独立,没有信息交换。
二:常见问题
1.为什么RocketMQ不用Zookeeper而要自己实现一个NameServer来进行注册?
没有脑裂问题
zk保证cp,没有保证高可用,所有更加合适,偏向ap
为啥不用nacos
nacos除了服务发现,还有一些配合,nacos显得更加重,不利于单个产品推进,依赖冲突问题
2.Consumer分组有什么用?Producer分组呢?
在brokwer,按照组进行记录消息
product组,设计到事务消息机制