可靠性:
rabbitMq集群部署,master队列和mirror队列保存一致的数据,master挂掉后可将mirror队列提升为master队列进行消费
问题1:mirror队列会将未收到确认而导致没有删除的消息再发一遍,需要客户端去防止重复消费。
问题2:master队列还没有将消息同步到mirror队列就挂掉,会导致消息丢失。
Kafka集群:每个topic分多个partition,每个partition有副本,主partition挂掉后启用副本partition,客户端连接新的主partition
问题1:kafka客户端根据偏移量消费不同的消息,不会出现重复消费的问题
问题2:主从partition同步也有可能出现消息丢失问题。
问题3:kafka稳定性同时依赖于zookeeper集群的稳定性
但从稳定性可靠性来讲,两者区别不大
吞吐量:
kafka:topic根据partition多机分布式部署,消费端可消费不同的partition增加吞吐量.
rabbitmq:消费端只能消费masterqueue,mirrorqueue不能分担队列消费压力,因此吞吐量不如kafka.
场景:大吞吐量可使用kafka,要求消息顺序的话可以使用rabbitmq,因为此时kafka只能有一个partition,对比不如单机rabbitmq