阅读 72

消息队列经典面试问题(二)

常见面试问题

  • 你使用过哪个消息队列?
  • 不同消息队列的优点和缺点

常见的消息队列

目前比较主流的消息队列主要有ActiveMQ、RabbitMQ、RocketMQ、Kafka,那他们有各有什么优点和缺点,我们直接看下图:

我们稍微总结一下

  • ActiveMQ:非常成熟,功能强大,在业内大量的公司以及项目中都有应用偶尔会有较低概率丢失消息,但是目前社区基本没什么活跃度了,而且官方也不怎么维护了,而且主要是基于解耦和异步来用的,较少在大规模吞吐的场景中使用。

  • RabbitMQ:erlang语言开发,性能极其好,延时很低;吞吐量到万级,MQ功能比较完备,最重要的是开源提供的管理界面非常棒,用起来很好用,社区相对比较活跃,几乎每个月都发布几个版本;但是问题也是显而易见的,RabbitMQ确实吞吐量会低一些,这是因为他做的实现机制比较重。而且它是erlang开发,对源码研究和定制有一定阻碍,很大程度依赖开源社区的快速维护和修复bug。

  • RocketMQ:接口简单易用,日处理消息上百亿之多,可以做到大规模吞吐,性能也非常好,分布式扩展也很方便,社区维护还可以,可靠性和可用性都是不错的,还可以支撑大规模的topic数量,支持复杂MQ业务场景。

  • Kafka:kafka的优点其实很明显,就是提供较少的核心功能,但是提供超高的吞吐量,ms级的延迟,极高的可用性以及可靠性,而且分布式可以任意扩展同时kafka最好是支撑较少的topic数量即可,保证其超高吞吐量,而且kafka唯一的一点劣势是有可能消息重复消费,那么对数据准确性会造成极其轻微的影响,在大数据领域中以及日志采集中,这点轻微影响可以忽略,这个特性天然适合大数据实时计算以及日志收集。