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编写
浙公网安备 33010602011771号