kafka与RabbitMq使用业务场景区别
1.kafka与rabbitMq使用区别
区别点 | rabbitMq | kafka |
---|---|---|
架构模型 | RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键;客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费(长连接,queue有消息会推送到consumer端,consumer循环从输入流读取数据)。rabbitMQ以broker为中心; | kafka遵从一般的MQ结构,producer,broker,consumer,以consumer为中心,消息的消费信息保存的客户端consumer上,consumer根据消费的点,从broker上批量pull数据 |
消息确认机制 | 具有生产者confirm机制以及消费者的消息应答机制ack。 | 不具有应答机制。 |
消息的顺序 | 在一个队列里面,rabbitmq的消息是严格顺序的,按照先进先出。 | 在同一个partition中消息是有序的,但是生产者put到Kafka中数据会分布在不同的partition中,所有总体是无序的。 |
吞吐量 | 根据测试,RabbitMQ在不使用ACK机制的,Msg大小为1K的情况下,QPS可达6W+。再双方ACK机制,Msg大小为1K的情况下,QPS瞬间降到了1W+。 | Kafka具有巨大的吞吐量,数据的存储以及获取是本地磁盘的批量处理,可以达到百万/s。 |
可靠性 | RabbitMQ使用了MirrorQueue的机制,也可以做到多个机器进行热备 | Kafka的broker支持主备模式。 |
持久化 | 支持 | Kafka 是一个持久性消息存储。 |
- 业务场景区别
kafka适用于大批量日志处理,对于大量数据得缓存,转存,转发,作为消息中转站,适用于对消息丢失丢失不太敏感的系统,不需要实时得处理
RabbitMq适用于实时消息处理,拥有ACK机制,处理高可靠的消息,并且消息尽可能得小