以下所有的分析都是基于 RocketMQ (tag rocketmq-all-4.1.0-incubating) 和 Kafka (tag 0.10.0.0),对于 Kafka,涉及 Producer 和 Consumer 的,都是基于该版本的 Java API.
过去大半年时间断断续续看了很多 RocketMQ 和 Kafka 的源码,下面从源码的角度分析下两者的共同点/不同点。
部署和存储模型
RocketMQ 的部署是主从架构,可以一主无备,一主一备,一主多备,多主多备,可靠性依次递增。
Kafka 的部署是互为主备的架构,一个 Broker 即可以是某个分区的主副本,又可以是其他分区的从副本。