1、kafka单机tps比rocketmq高一点。
2、kafka消息失败不支持重试。
3、kafka的topic越多,性能越差,原因是kafka的topic消息存多个partition,topic越多,partition越多,磁盘io效率降低。
rocketmq一个broker机器上所有topic消息都存一个commitlog文件,并且数据对应到commitQueue队列,并且使用了linux的
pagecache, 磁盘一页一页读取,每读一次,就会将一页数据存于高速缓存。并且采用零拷贝,直接从磁盘数据拷贝到网络驱动态内存,提高了读取效率。
3、rocketmq和kafka都支持消息顺序,但kafka的topic就只能设置一个partition,rocketmq也只能设置一个consumerQueue队列。
4、kafka不支持定时消息。rocketmq支持指定的定时级别。
5、kafka不支持分布式事务消息,mq支持。
普通数据拷贝过程:
1、磁盘数据到系统内核态内存
2、系统内核态内存到用户态内存。
3、用户态内存到网络驱动态内存。
4、网络驱动态内存到网卡内存。