MQ,其实目的都是一样,就是应对系统的并发可以实现消峰和解耦的作用,类似于创建了一个线程异步操作,这一点可以了解一下一款优秀的并发框架(Disruptor),据说是每秒可以处理十万级数据,
目前据本人了解,有一个开源分布式事务框架Hmily使用了这个,实现了异步处理解耦的作用,也省去了不少代码
言归正传,说回MQ,
本人就最近使用rabbitmq有感,发现rabbitmq在应对高并发的时候,效率似乎不敌rocketmq,
rocketmq有几大优点:
高并发
- ROCKETMQ/ONS消费区处理很快,快速拉取消息
- rabbitmq似乎略慢一点,
高可用
- 它两都可以做集群,比较适用于分布式系统
- 阿里双十一用的是rocketmq作为异步处理,自然很优秀,有亿级消息堆积能力,这点可能很多mq就已经做不到了
所需要的节点数量
- ROCKETMQ集群环境下,虽然不依赖zk,但是需要name server,至少2个节点,2个MASTER,就是4个
- RABBITMQ集群环境下,不依赖zk,只要3个erlang node,就是3个
全局顺序消费
- ROCKETMQ/ONS同上,只是变成了另外一个术语
- RABBITMQ能大致保证全局顺序消费
- 以上所讲的都是消息没有被拒绝或者消息处理失败重新回到队列的情况
事务
- RocketMQ支持事务消息,一旦消费失败,同一个事务会进行回滚
- rabbitmq不支持
其他功能-流控
- 只有RabbitMQ有
其他功能-优先级队列
- RabbitMQ对优先级队列支持最完善