kafka rabbitmq优劣对比_Kafka、RabbitMQ、RocketMQ常见消息中间件的介绍和对比 - Go语言中文社区

kafka rabbitmq优劣对比_Kafka、RabbitMQ、RocketMQ常见消息中间件的介绍和对比


在分布式系统中,我们会广泛使用各种消息中间件来进行系统间的数据交换,以便于各系统之间实现异步解耦。目前市场上开源的消息中间件有很多:如Kafka、RabbitMQ、RocketMQ等等。

c24731542ae31c91d1147d160b8f92ee.png

什么是消息队列

在正式介绍和对比Kafka、RabbitMQ、RocketMQ之前,我们来说说什么是消息队列(Message queue,简称MQ),从字面理解就是一个保存消息的一个容器。那么我们为何需要这样一个容器呢?其实就是为了解耦各个系统,我们来举个例子:

64e6a0f74d3d23701c50f4384acb6df4.png

有这么一个简单的场景,系统A负责生成userID,并调用系统B、C。如果系统BC频繁变化是否需要userID参数,则系统A的代码就得不断变化,如果哪天又来了系统DEF……也需要这个参数,则系统A又要加入很多业务逻辑,这样子各他系统之间就容易产生相互影响,另外大量的系统与A发生交互也容易产生问题。

cf0c5e987d16c85f71a952cc47ff4281.png

加了消息队列后,A只负责产生userID,至于谁要用这个参数,怎么用?系统A不管。对这个数据感兴趣的系统自己去取用即可,各个系统之间就实现了解耦。而且解耦后,整个服务也变成了一个异步的方式,系统A产生数据后,不用依次调用BCD来累计耗时,各系统可以同时来取用消息队列的数据进行处理,加大吞吐。

消息队列的特点

ac10bbb14b63badc9f4335068d67994f.png

1、先进先出:消息队列的顺序在入队的时候就基本已经确定了,一般是不需人工干预的。

2、发布订阅:发布订阅是一种很高效的处理方式,如果不发生阻塞,基本可以当做是同步操作。

3、持久化:持久化确保消息队列的使用不只是一个部分场景的辅助工具,而是让消息队列能像数据库一样存储核心的数据。

4、分布式:在现在大流量、大数据的使用场景下,支持分布式的部署,才能被广泛使用。消息队列的定位就是一个高性能的中间件。

Kafka、RabbitMQ、RocketMQ介绍

Kafka

e3abe65e1bf17cbd7a2457ae01874702.png

Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache顶级项目。Kafka主要为高吞吐量的订阅发布系统而设计,追求速度与持久化。kafka中的消息由键、值、时间戳组成,kafka不记录每个消息被谁使用,只通过偏移量记录哪些消息是未读的,kafka中可以指定消费组来实现订阅发布的功能。

RabbitMQ

12328ee61aed8b99546aac39236b76de.png

RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。

RocketMQ

RocketMQ是阿里开源的消息中间件,它是纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ思路起源于Kafka,但并不是Kafka的一个Copy,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景。支持的客户端语言不多,目前是Java及C++,其中C++还不成熟;

Kafka、RabbitMQ、RocketMQ对比

5f61fc33866ff4e77af642d26d3f2678.png

1、Rabbitmq比kafka可靠,kafka更适合IO高吞吐的处理,比如ELK日志收集。

2、kafka具有高的吞吐量,内部采用消息的批量处理,zero-copy机制,数据的存储和获取是本地磁盘顺序批量操作,具有O(1)的复杂度,消息处理的效率很高。rabbitMQ在吞吐量方面稍逊于kafka,他们的出发点不一样,rabbitMQ支持对消息的可靠的传递,支持事务,不支持批量的操作;基于存储的可靠性的要求存储可以采用内存或者硬盘。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39738251/article/details/110801878
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-16 19:38:06
  • 阅读 ( 771 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢