Rocket原理
1.延迟消息
2.死信消息
3.有序消息
rocketMQ只能做到"相对有序",而不是全局有序,即Topic下的某个Queue内的消息是有序的。
需要开发者实现MessageQueueSelector逻辑
4.事务消息
业务场景:保证本地事务和投递到下游的消息,要么一起成功,要么一起失败。一般用于分布式事务的场景
5.存在的问题
-
所有的消息共用commitlog文件,默认过期14天,这个规则是针对所有topic的中的消息。kafka消息过期时间可以支持到topic级别。
-
所有的消息共用commitlog文件,大吞吐场景下,假如有长时间的延迟队列(比如7Days,1month这种)这种情况下消息可能不在pageCache中,导致读取磁盘,会影响整体的性能。
-
假如slave节点宕机很久,slave重启后,会从master节点拉取历史消息进行同步,会产生大量磁盘io,大幅降低pageCache命中率,导致吞吐量降低
6.总结
-
支持积压大量消息
-
自动容灾,高可用
-
独立维护各topic的index,pagecache利用率更高
-
不依赖zk,容易运维
-
不支持个性化topic过期时间配置