文章目录
前言
当引入消息队列时,常见的选择包括ActiveMQ、Kafka、RabbitMQ和RocketMQ。然而,近年来,ActiveMQ的活跃度已经下降,很多公司已经不再使用这款消息队列中间件,因此在比较中不再涉及该产品。
RabbitMq
前些年使用最多的一定是RabbitMq了,直到现在被使用的频率还是很高的。
优点
1.可靠性高:提供强大的消息传递机制,支持消息确认、持久化等特性,确保消息可靠传递。
2.支持多种消息传递模式,如点对点、发布/订阅等,适应不同的场景需求。支持消息重试、死信队列等
3.提供了直观的管理界面,方便监控和管理队列、交换机、连接等信息。
缺点
1.吞吐量比较低,对于大型电商促销秒杀就无法胜任。
2.开发语言是erlang,懂得人不是很多,改造成本较高。
3.配置和使用相对复杂,需要理解其消息模型和特性,有一定学习曲线。
RocketMq
再说说RocketMq,近几年使用Mq中间件的香饽饽
优点
1、单机吞吐量十万级,可用性非常高,分布式架构;
2、经过参数优化配置,消息可以做到0丢失,RocketMQ 的所有消息都是持久化的,先写入系统 PAGECACHE,然后刷盘,可以保证内存与磁盘都有一份数据;
3、支持10亿级别的消息堆积,不会因为堆积导致性能下降;
4、源码是java,便于二次开发。
缺点
1、RocketMQ 的部署和配置相对复杂,需要理解其架构和各种配置参数,对于初学者有一定的学习曲线。
2、如果消息的消费速度远低于生产速度,可能会导致消息堆积,需要合理配置流量控制策略来避免系统故障。
Kafaka
kafka其实一般大数据相关的开发使用的比较多,很多时候kafka会用来做收集日志
优点
1.Kafka的最大优势是高吞吐量和低延迟,Kafka 能够处理大规模的消息并保持较低的延迟,适用于对消息处理速度有要求的场景。
2.Kafka 支持多种消息模型,包括发布/订阅、批量消费、流式处理等,适用于不同的业务场景。
- Kafka 提供了消息持久化机制,消息被写入磁盘并复制到多个节点,保证了消息的持久性和可靠性。
缺点
1.依赖ZooKeeper: Kafka 需要依赖 ZooKeeper 来进行节点管理和协调,增加了系统的复杂性和维护成本。
2.Kafka 的部署和配置相对复杂,需要理解其架构和各种配置参数,对于初学者有一定的学习曲线。
3.Kafka 保证了分区内消息的顺序性,但在分区间无法保证全局顺序,需要开发者自行处理消息的顺序性。
4.Kafka 将所有消息都持久化到磁盘上,可能会占用大量的硬盘资源,需要合理规划硬盘空间。
总结
其实如果一般来说你业务使用mq,对消息的安全性要求较高,选择RocketMq;
如果对于一些使用mq数据量比较大的场景,比如日志相关的,对消息的丢失要求不高的情况下,选择kafaka。
版权归原作者 简单简单小白 所有, 如有侵权,请联系我们删除。