Kafka、rabbitmq、zeromq、rocketmq、activemq综合对比(二)

本文对比了五种流行的消息队列系统:Kafka、RabbitMQ、RocketMQ、ZeroMQ和ActiveMQ。Kafka在超大规模数据场景下表现出色,支持流式处理,但不支持消息重试。RabbitMQ并发性能好,支持长时间消费,但只支持简单集群。RocketMQ提供高可靠性和消息回溯,适合重要业务。ZeroMQ性能优异,但消息丢失风险高。ActiveMQ成熟且功能齐全,但存储方式仅支持少量堆积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Kafka、rabbitmq、zeromq、rocketmq、activemq综合对比(一)

总结

为了尽可能的有参考价值,只关心在生产环境中的重要特性。

Kafka/Jafka

【优势】

Kafka的优势是在超大规模数据的应用场景下体现的。

1>吞吐量极大。

a)充分利用缓冲区,发送端按批次批量发送消息,消费端按批次批量处理消息。

b)高效持久化。

c)批量刷盘。从页面缓存批量刷到磁盘。

2>动态扩展性。

支持热扩展,添加consumer、broker、producer无需关闭服务。

3>高可用、容错性、伸缩性。

4>支持同步到数据库,能与hadoop、hbase等建立数据管道。

基于磁盘的数据存储,通过建立数据管道,可以会把磁盘的消息数据同步到mysql或者hbase等数据库。

消费者可以在进行应用程序维护时离线一段时间,无需担心消息丢失或者堵塞在生产者端。

5>完全的分布式系统,Broker、Producer、Consumer都原生自动支持分布式,自动支持负载均衡,zookeeper负责管理集群成员,搭建、部署、维护分布式集群更加简单。

每一个topic有多个分区,每一个分区有多个副本,当分区首领所在的主机发生问题的时候,kafka会自动从分区副本中选举下一个分区首领,让该分区首领的主机提供服务,分区副本的个数只需要简单配置即可,分区副本的创建和分配,不用我们去操心,负责选举的主机也是kafka选举出来的,选举哪一台主机作为控制器的过程也不用我们操心。

6>流式处理能力。

流数据是数量无限的,连续的,时序性的数据,比如游戏里物体的移动、股票交易、制造商传感器发出的事件、用户行为事件、流经交换机的网络事件等等,公司里的系统一般都包含了大量有价值的数据流。

流式处理不要求实时性达到亚毫秒级的响应,也接受不了要等到第二天才知道结果,基于批处理和实时处理之间。

kafka很多基于Kafka构建的流式处理系统都将kafka作为唯一可靠的数据来源。

a)kafka支持两个基于流的API,一个是底层的Processor API,一个是高级的Stream DSL。

b)kafka0.10.0和更高的版本可以记录时序信息。

kafka的生产者会自动在记录中添加记录的创建时间。

kafka会记录日志追加时间,日志追加时间是指事件保存到broker的时间,如果启用了自动添加时间戳的功能,那么broker会在接收这些记录的时候自动添加时间戳。

【劣势】

1>不支持消息重试,注意区分消息重传!消息消费失败后,把错误记录下来?把消息保存到磁盘上?回调另一个程序?具体哪一种逻辑是由我们决定的,比如发生异常时在catch代码块中加入到死信队列,消息可能丢失(消息来不及处理就宕机了,或者代码逻辑的疏忽)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值