1.RocketMQ 是什么?
上图是一个典型的消息中间件收发消息的模型,RocketMQ也是这样的设计,简单说来,RocketMQ具有以下特点:
o 是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。
o Producer、Consumer、队列都可以分布式。
o Producer向一些队列轮流发送消息,队列集合称为Topic,Consumer如果做广播消费,则一个consumer实例消费这个Topic对应的所有队列,如果做集群消费,则多个Consumer实例平均消费这个topic对应的队列集合。
o 能够保证严格的消息顺序
o 提供丰富的消息拉取模式
o 高效的订阅者水平扩展能力
o 实时的消息订阅机制
o 亿级消息堆积能力
o 较少的依赖
2.RocketMQ 物理部署结构
如上图所示, RocketMQ的部署结构有以下特点:
o Name Server是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。
o Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。每个Broker与Name Server集群中的所有节点建立长连接,定时注册Topic信息到所有Name Server。
o Producer与Name Server集群中的其中一个节点(随机选择)建立长连接,定期从Name Server取Topic路由信息,并向提供Topic服务的Master建立长连接,且定时向Master发送心跳。Producer完全无状态,可集群部署。
o Consumer与Name Server集群中的其中一个节点(随机选择)建立长连接,定期从Name Server取Topic路由信息,并向提供Topic服务的Master、Slave建立长连接,且定时向Master、Slave发送心跳。Consumer既可以从Master订阅消息,也可以从Slave订阅消息,订阅规则由Broker配置决定。
3.RocketMQ 逻辑部署结构
如上图所示,RocketMQ的逻辑部署结构有Producer和Co