MQ的主要作用:异步提高性能、解耦提高扩展性、削峰。
一、常见中间件对比
Kafka、RocketMq和RabbitMq最大的区别就是:前两个是分布式存储。
1.1、ActiveMq
优点:1)完全支持jms规范的消息中间件 ,2)提供丰富的api, 3)多种集群构建模式。
缺点:)在高并发的场景下,性能可能不是很好,容易造成消息堆积,延时。
1.2、RabbitMQ
使用Erlang语言开发,基于AMQP协议实现。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求在其次。
1.3、kafka
优点:高吞吐量,用于大数据收集分析。
缺点:对消息的重复消费,消息的丢失,不支持事务等。
1.4、rocketMq
优点:由于借鉴kafka的设计思路,具有高吞吐量,高性能的特定,同时也对事务,消息的可靠性做了优化。
缺点:需要收费(解决分布式事务,主从自动切换 在4.0需要收费)
二、RabbitMq
2.1、AMQP的核心概念
RabbitMq基于AMQP协议实现,其中AMQP有以下核心概念