Kafka 和RabbitMQ区别,为什么用Kafka
二者主要有以下几种区别
- 从支持消息类型上讲:RabbitMQ 基于 AMQP 协议实现的,Kafka基于JMS协议,所以Kafka支持的消息类型更多:StreamMessage (Java原始值的数据流);MapMessage(一套名称-值对);TextMessage(一个字符串对象);ObjectMessage(一个序列化的 Java对象);BytesMessage(一个字节的数据流),而RabbitMQ 只支持二进制字符流
- 从性能、延时和并发量来讲,RabbitMQ 在吞吐量方面虽然稍逊于 Kafka ,但是由于它基于 erlang 开发,所以并发能力很强,性能极其好,延时很低,达到微秒级。如果业务场景对吞吐量要求不是太高(十万级、百万级),RabbitMQ 一定是首选。如果是大数据领域的实时计算、日志采集等场景,用 Kafka 是业内标准的,绝对没问题
总结而言,Kafka支持更多数据类型,更通用,延时较高,RabbitMQ只支持二进制字符流,延时低、性能好。
Kafka一般用在什么业务场景里
消息队列具有低耦合、可靠投递、广播、流量控制、最终一致性