一、Broker设计对比
1. Kafka
- Topic A共有2个分区,每个分区有两个副本(一个Leader一个Follower),分别分布在 Broker0 和 Broker1 上;
- Broker0/Broker1每台机器既是Leader,也是Follower。具体来说,比如机器Broker0对于Partition0来说是Master,对于Partition1来说又是Follower;
2. RocketMQ
- Broker集群中有Broker0和Broker1为Leader,每个Broker有两个Slave,共6台机器;
- Master0/Slave0_0/Slave0_1/Master1/Slave1_0/Slave1_1每台机器通过配置固定只能充当Master或Slave;
- TopicA在Broker0上有两个队列,在Broker1上有两个队列;
3. 对比
1.
Kafka的Leader/Follower是个逻辑概念,1台机器可以同时具有Leader角色和Follower角色;RocketMQ的Master/Slave是个物理概念,1台机器,只能是Master或者Slave。在集群初始配置的时候,指定死的;2.
Kafka的Broker是个物理概念,1个broker就对应1台机器。 RocketMQ的Broker是个逻辑概念,1个broker = 1个master + 多个slave,brokerName相同,Master的brokerId=0ÿ