Kafka/RocketMQ选型:
Kafka高吞吐量,适合日志处理,大数据这类对于消息丢失不敏感的场景
RocketMQ:适合实时业务处理
使用场景
- Kafka 适合对于延迟不敏感、批量型、Topic 数量可控、对于消息丢失不敏感的场景。比如大数据场景的 MySQL-2Hive、MySQL-2-Flink 的数据流通道,日志数据流通道等。
- RocketMQ 适用于金融转账消息、订单状态变更消息、手机消息 Push 等业务场景。这些场景 Topic 数量通常过万,对于消息延迟和丢失极度敏感,数据通常是论条处理。对于海量数据的问题,一般地横向扩容完全可以解决。
主要区分
性能:Kafka吞吐量更高,单机百万/秒;RocketMQ单机10万/秒。
特殊消息:Kafka不支持定时,事务消息等
支持队列数:Kafka超过64个队列(partition)性能下降严重,而RocketMQ最高支持5万个队列
原因:首先都是顺序写入,不过 RocketMQ 是把消息都存一个文件中,而 Kafka 是一个分区一个文件。每个分区一个文件在迁移或者数据复制层面上来说更加得灵活。但是分区多了的话,写入需要频繁的在多个文件之间来回切换,对于每个文件来说是顺序写入的,但是从全局看其实算随机写入,并且读取的时候也是一样,算随机读。而就一个文件的 RocketMQ 就没这个问题。
https://github.com/apache/rocketmq/blob/master/docs/cn/architecture.md