1.RocketMQ、Kafka、RabbitMQ对比
规格 | RocketMQ | Kafka | RabbitMQ |
吞吐量 | >10w/s | 十几万/s | 几万/s |
集群部署 | 支持 | 支持 | 支持 |
稳定性 | 可配置不丢数据,相对稳定 | 会丢数据 | 不丢数据 |
额外功能 | 死信队列,消息重试,延迟消息,事务,消息回溯 | 功能单一 | 死信队列,消息重试 |
2.RocketMQ架构原理图
Broker:提供轻量级的Topic和Queue机制,支持pull和push模式,本身有容错机制。负责消息的存储和传递。包含远程模块、客户端管理、存储服务、HA服务和索引复。每一个Broker都和NameServer通过TCP连接联系。RocketMQ4.5版本之前,Master-Slave模式不是彻底的可用模式,Master挂掉不能自动将Slave切换成Master,RocketMQ4.5之后,采用Dledger,基于Raft,一个Master多个Slave,Slave从Master同步消息,当Master挂掉,采用选举机制(Broker服务器随机休眠,醒来后各自选举自己,并发送给其他Broker),Slave会自动的被选为Master。一个集群下,Master和Slave都有相同的名字,但是不同的BrokerID,Master=0,Slave为>0的ID。
Broker启动时获取远程nameServerAddressList,进行for循环处理,注册自己的topic信息。
NameServer:提供轻量级的Topic路由功能&#