1、Kafka和RabbitMQ在吞吐量的区别是什么? 一般情况下,RabbitMQ单机的吞吐率在万级别之内,而Kafka单机则比RabbitMQ高出一两个量级,可以达到十万级别,甚至可以达到百万级别。(/但吞吐率是受到硬件层面的限制的。比如网卡的宽带,如果宽带为1gb,要达到百万的吞吐量就相当于1gb / 8 / 100w = 134b,相当于每次的消息体大小不能超过13b,否则就不算是百万的吞吐量了/) 这是RabbitMQ和Kafka在吞吐量之间的区别。 2、Kafka和RabbitMQ在消息可靠性的区别是什么? (/消息的可靠性:是指对消息不丢失的保障程度;消息的可用性:是指无故障运行时间的百分比,通常用几个9来衡量。/) 使用消息中间件在传输消息的过程中会导致消息的丢失,也就是可靠性是每个中间件都会面临的问题;同时又会涉及到消息的可用性。 从微观方面来说,分布式系统结构是一致性协议理论的应用实现,对于消息中间件的可靠性和可用性吧区别的话可以根据它们的一致性协议来看; -Kafka采用的是类似PacificA的一致性协议,通过ISR (In-Sync-Replica) 来保证多副本之间的同步,并且支持强一致性语义(通过acks实现)。(/类似Pacific的一致性协议和ZAB都是基于实用主义,把 log replication日志赋值 和 Leader election