说到rocketmq,就避免不了跟kafka对比。那他们区别在哪?
从文件布局来说
kafka的文件存储,大致是topic/partition这种,每个分区对应一个文件,rocketmq则色只有一个文件commitlog,那如果分区特别大的时候,kafka存数据的时候就可能类似随机io了。但是rq一个文件也有问题就是并不能完全利用磁盘io的性能。当然,标识打得好,分区多,也就意味着如果现在要扩分区,移动起来kafka会更麻烦一点。
从数据写入来说
kafka写入用的Filechannel的transfer to,底层是sendfile,当然写稀疏索引的时候用的是mmap,rocketmq用的是mmap内存映射。
从发送方式来看
kakfa在客户端发送的时候会有个批量的概念,还引入了缓存概念,也就是不会立刻发给broker存储,优势就是快,劣势就是增加了丢失的可能性。