Kafka与RabbitMQ的区别?

一、Kafka和RabbitMQ在吞吐量的区别是什么?面试

通常状况下,RabbitMQ单机的吞吐率在万级别以内,而Kafka单机则比RabbitMQ高出一两个量级,能够达到十万级别,甚至能够达到百万级别。(/但吞吐率是受到硬件层面的限制的。好比网卡的宽带,若是宽带为1gb,要达到百万的吞吐量就至关于1gb / 8 / 100w = 134b,至关于每次的消息体大小不能超过13b,不然就不算是百万的吞吐量了/)算法

这是RabbitMQ和Kafka在吞吐量之间的区别。网络

二、Kafka和RabbitMQ在消息可靠性的区别是什么?(/消息的可靠性:是指对消息不丢失的保障程度;消息的可用性:是指无端障运行时间的百分比,一般用几个9来衡量。/)运维

使用消息中间件在传输消息的过程当中会致使消息的丢失,也就是可靠性是每一个中间件都会面临的问题;同时又会涉及到消息的可用性。异步

从微观方面来讲,分布式系统结构是一致性协议理论的应用实现,对于消息中间件的可靠性和可用性吧区别的话能够根据它们的一致性协议来看;分布式

-Kafka采用的是相似PacificA的一致性协议,经过ISR (In-Sync-Replica) 来保证多副本之间的同步,而且支持强一致性语义(经过acks实现)。(/相似Pacific的一致性协议和ZAB都是基于实用主义,把 log replication日志赋值 和 Leader election Leader选举分开,而Paxos算法则是将两个问题合在一块儿想/)性能

-RabbitMQ则是经过镜像环形队列实现多副本以及强一致性语义。大数据

三、RabbitMQ和Kafka在扩展能力的区别是什么?(可用性方面)优化

消息中间件的扩展能力是指可以加强其可用能力及范围;插件

好比RabbitMQ能够支持多种消息协议就是它扩展能力的一种体现,是RabbitMQ在其基础上添加了一个插件来扩展实现的。

而Kafka在集群部署上,例如LinkedIn实践介绍中就说过有部署超过了千台设备的Kafka集群,这就是Kafka在扩展能力方面的体现。

四、应用场景

Kafka 设计之初是为日志处理而生,给人们留下了数据可靠性要求不要的不良印象,可是随着版本的升级优化,其可靠性获得极大的加强, 就目前而言,在金融支付领域使用 RabbitMQ 居多 。

而在日志处理、大数据等方面 Kafka 使用居多。

 

业界内主要的 消息队列中间(消息中间件)件经常使用的主要有:RabbitMQ、Kafka、ActiveMQ、RocketMQ、ZeroMQ等等。

分布式系统:是由多台计算机主机组成的一个集合,在用户的角度看来是一台单独的主机上的一个分布式系统;但不是说硬件层面的所有组成一个集合,只是涉及多台计算机的部分硬件;它是基于网络的基础上创建的软件系统。(个人第一句话能够类比进行理解:例如阿里巴巴的分布式系统是由多台(十几万台)计算机组成的,在咱们的角度看来它好像就只是一台巨大的主机,其实它是由多个主机组成的。第二句话类比理解:这些计算机组成了分布式系统但不是所有都只能进行对系统方面进行运转,它们能够用在其余方面例如存储其余的数据等。第三句类比理解:十几万台计算机是创建在网络上的软件系统,经过网络通讯和链接组成一个庞大软件系统来对庞大的用户提供服务)

消息中间件是指:利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通讯来进行分布式系统的集成。经过提供消息传递和消息排队模型,它能够在分布式的环境下提供应用解耦、异步通讯、流量削峰等等。

 

RabbitMQ是什么?——RabbitMQ是一个消息队列,主要做用是解耦、异步、削峰、消息分发等等。是一个消息中间件。

Kafka是什么?——是基于Zookeeper协调的一个分布式消息系统,是一个高吞吐量的分布式发布和订阅消息系统,以水平扩展和高吞吐率而被普遍使用。

 

对消息中间件能够从多个方面进行比较,功能维度(同时又分为多个子维度)、性能维度(有时候比功能维度更加剧要)、可靠性+可用性、运维管理、社区力度及生态发展。

面试的时候回答性能、可靠可用性、重量级便可。重量级是什么?

相关文章
相关标签/搜索