概述
这篇博文主要讲清楚kafka和rocketMq的两个不同点,1、rocketMq的namesvr和kafka的zookeeper对比;2、kafka为什么比rocketMq有更大的吞吐量。如果能够讲清楚上面两个问题我觉得就已经很满足了。
最后,文章引入的参考文章里面有一些比较好的链接,有兴趣的话可以好好看看,里面其实有些地方比我讲解的更深入。
namesrv VS zk
1:我们可以对比下kafka和roketMq在协调节点选择上的差异,
- kafka:是通过zookeeper来进行协调
- rocketMq:是通过自身的namesrv进行调节的
2:kafka具备选举功能,在kafka里面,master/slave选举有2步
- 先通过zk在所有机器中,选举出一个kafkaController;
- 在由这个controller决定每个partition的master是谁。因为有了选举功能,所以kafka某个partition的master挂了,该partition对应的某个slave就会升级为master,对外提供服务。
3:rocketMq不具备选举,master/slave的角色是固定的,当一个master挂了之后,你可以写到其他master上,但不能让一个slave切换成master。那么rocketMq是如何实现高可用的呢,其实很简单,rocketMq的所有broker节点的绝对都是一样的,上面分配的topic和对应的queue的数量也是一致的,Mq只能保证当一个broker挂了,把原本写到这