kafka和rocketMq区别

https://mp.weixin.qq.com/s/_YuLzBpgSvHi9nH2wTEjvQ

1、性能对比

Kafka单机写入TPS约在百万条/秒,消息大小10个字节

RocketMQ单机写入TPS单实例约7万条/秒,单机部署3个Broker,可以跑到最高12万条/秒,消息大小10个字节

总结:Kafka的TPS跑到单机百万,主要是由于Producer端将多个小消息合并,批量发向Broker。有效减少了网络IO

RocketMQ为什么没有这么做?

  • Producer通常使用Java语言,缓存过多消息,GC是个很严重的问题
  • Producer调用发送消息接口,消息未发送到Broker,向业务返回成功,此时Producer宕机,会导致消息丢失,业务出错
  • Producer通常为分布式系统,且每台机器都是多线程发送,我们认为线上的系统单个Producer每秒产生的数据量有限,不可能上万。
  • 缓存的功能完全可以由上层业务完成。

2、消费失败重试

Kafka消费失败不支持重试

RocketMQ消费失败支持定时重试,每次重试间隔时间顺延

总结:例如充值类应用,当前时刻调用运营商网关,充值失败,可能是对方压力过多,稍后在调用就会成功,如支付宝到银行扣款也是类似需求。

这里的重试需要可靠的重试,即失败重试的消息不因为Consumer宕机导致丢失

3、事务消息

kafka不支持

RocketMQ支持,

分布式事务就是在分布式系统来实现的事务,消息中的事务之所以说它是分布式事务,是因为事务的参与者及事务管理器:消息发送端(producer),消息服务器(broker),消息的消费端(consumer)位于分布式系统的不同节点上。

MQ的事务消息就是为了解决消息发送端、及消费端的一致性。

4、延迟消息

kafka不支持延迟消息

RocketMQ支持延迟消息

5、消费并行度

Kafka的消费并行度依赖Topic配置的分区数,如分区数为10,那么最多10台机器来并行消费(每台机器只能开启一个线程),或者一台机器消费(10个线程并行消费)。即消费并行度和分区数一致。

RocketMQ消费并行度分两种情况

  • 顺序消费方式并行度同Kafka完全一致
  • 乱序方式并行度取决于Consumer的线程数,如Topic配置10个队列,10台机器消费,每台机器100个线程,那么并行度为1000

6、开发语言

kafka使用Scala编写

RocketMQ使用java编写

posted @   MarkLeeBYR  阅读(236)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示