rocketmq的转发模型

发布时间 2023-09-04 22:09:30作者: 曹军

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组,设计到事务消息机制