1.区别:
- 性能(吞吐量):Kafka 的吞吐量(性能)要比RabbitMQ高出1到2个数量级,一般RabbitMQ 的单机QPS(Query Per Second/每秒查询率)在万级别之内,而Kafka的单机QPS可以维持在十万级别,甚至可以达到百万级。
- 可靠性和可用性:消息中间件的可靠性是指对消息不丢失的保障程度;而消息中间件的可用性是指无故障运行的时间百分比,通常用几个 9 来衡量。从狭义的角度来说,分布式系统架构是一致性协议理论的应用实现,对于消息可靠性和可用性而言也可以追溯到消息中间件背后的一致性协议。对于Kafka而言,其采用的是类似PacificA的一致性协议,通过ISR(In-Sync-Replica)来保证多副本之间的同步,并且支持强一致性语义(通过acks实现)。而RabbitMQ是通过镜像环形队列实现多副本及强一致性语义的。多副本可以保证在master节点宕机异常之后可以提升slave作为新的master而继续提供服务来保障可用性。
- 扩展能力:消息中间件的扩展能力能够增强其用可用能力及范围,RabbitMQ可以基于其插件化扩展实现支持多种消息协议。Kafka可以从集群部署上实现其水平扩展能力,其基本上可以达到线性容量提升的水平,在 LinkedIn 实践介绍中就提及了有部署超过千台设备的Kafka集群。
- 应用场景:Kafka设计之初是为日志处理而生,给人们留下了数据可靠性要求不高的不良印象,但是随着版本的升级优化,其可靠性得到极大的增强。就目前而言,在日志处理、大数据等方面Kafka使用居多,而在金融支付领域使用RabbitMQ居多。
参考文档:
- https://juejin.im/post/5acf29316fb9a028cb2e04ce#heading-5
来源:oschina
链接:https://my.oschina.net/u/4480939/blog/3211196
