业界对于消息的传递有多种方案和产品,本文就比较有代表性的两个MQ(rabbitMQ,kafka)进行阐述和做简单的对比,
在应用场景方面,
RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。
kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。
1)在架构模型方面,
RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键;客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费(长连接,queue有消息会推送到consumer端,consumer循环从输入流读取数据)。rabbitMQ以broker为中心;有消息的确认机制。
kafka遵从一般的MQ结构,producer,broker,consumer,以consumer为中心,消息的消费信息保存的客户端consumer上,consumer根据消费的点,从broker上批量pull数据;无消息确认机制。
2)在吞吐量,
kafka具有高的吞吐量,内部采用消息的批量处理,zero-copy机制,数据的存储和获取是本地磁盘顺序批量操作,具有O(1)的复杂度,消息处理的效率很高。
rabbitMQ在吞吐量方面稍逊于kafka,他们的出发点不一样,rabbitMQ支持对消息的可靠的传递,支持事务,不支持批量的操作;基于存储的可靠性的要求存储可以采用内存或者硬盘。
3)在可用性方面,
rabbitMQ支持miror的queue,主queue失效,miror queue接管。
kafka的broker支持主备模式。
4)在集群负载均衡方面,
kafka采用zookeeper对集群中的broker、consumer进行管理,可以注册topic到zookeeper上;通过zookeeper的协调机制,producer保存对应topic的broker信息,可以随机或者轮询发送到broker上;并且producer可以基于语义指定分片,消息发送到broker的某分片上。
rabbitMQ的负载均衡需要单独的loadbalancer进行支持。
相关推荐
ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程
ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程
RabbitMQ和Kafka详细笔记以及示例代码
简单介绍了如何在Spring Cloud中使用RabbitMQ和Kafka来完成消息发送与接收
比较MQ产品之RabbitMQ与Kafka.zip
分布式通讯面试专题系列:ActiveMQ+RabbitMQ+Kafka.zip
本项目采用了rabbitmq与kafka两种消息队列,将任务调度从原始的业务微服务中有效分离,降低业务代码的耦合度。所有调度任务均由调度中心微服务发起。使原有业务真正实现分布式多节点运行。本资源包含了Github下载...
分布式通讯面试专题系列:ActiveMQ+RabbitMQ+Kafka07
连接器用于读取RabbitMQ队列或主题。 配置 名称 类型 重要性 默认值 验证器 文献资料 kafka.topic 细绳 高的 Kafka主题,用于将消息写入。 兔子队列 列表 高的 兔子队列 rabbitmq.host 细绳 高的 本地主机 要...
RabbitMQ 选型和对比 1.从社区活跃度 按照目前网络上的资料,RabbitMQ 、activeM 、ZeroMQ 三者中,综合来看,RabbitMQ 是首选。 2.持久化消息比较 ZeroMq 不支持,ActiveMq 和RabbitMq 都支持。持久化消息主要是...
骆驼原型RabbitMQ Kafka连接器
MQ对比:Kafka VS Rocketmq VS Rabbitmq 超详细 ,值的收藏,参考资料
高性能架构面试题系列:Nginx+ActiveMQ+RabbitMQ+Kafka 请解释Nginx如何处理HTTP请求。 Nginx使用反应器模式。主事件循环等待操作系统发出准备事件的信号,这样数据就可以从套接字读取,在该实例中读取到缓冲区并...
RabbitMQ至Kafka桥 主要思想是从提供的交换中读取消息,并将其发送给 。 在Kafka不可用的情况下,应用程序使用中间永久性存储来保留读取的消息。 服务是用Go语言编写的,并且可以使用1.14及更高版本的go编译器...
经典面试学习知识
目前流程的消息队列主要有:ActivityMQ/kafka/redis/rabbitmq等。通过对这些MQ进行比较分析rabbitmq优势:1.从社区活跃度;2.持久化消息比较(ZeroMq 不支持,ActiveMq 和RabbitMq 都支持。持久化消息主要是指我们...
MQ对比
• 支持 18 个级别的延迟消息(RabbitMQ 和 Kafka 不支持) • 支持指定次数和时间间隔的失败消息重发(Kafka 不支持,RabbitMQ 需要手动确认) • 支持 Consumer 端 Tag 过滤,减少不必要的网络传输(RabbitMQ 和 ...
golang 推送系统 单机 客户端通过websocket连接到服务端 ...服务端从rabbitmq接收消息,根据消息所属通过websocket推送到具体用户 服务端从http api接收消息,根据消息所属通过websocket推送到具体用户