本文主要是介绍kafka VS Rabbit,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 前言
经历过多个基于微服务的场景,经常在问自己“到底是用Kafka还是Rabbit,二者之间该怎么选择,它们各有什么优点和缺点”。本文先从他们内部的消息传递模式说起。
2. 架构对比
2.1. Rabbitmq
RabbitMQ是一个通用的消息代理,通过包括点对点、请求/响应及发布订阅在内的多种消息通信模式。其采用的是一种智能代理/傻瓜消费的模式,侧重消息的持续投递与处理,并通过代理本身来维护消费者自身状态。RabbitMQ是一个设计成熟的消息代理中间件,支持包括Java, node.js, .NET, Ruby, PHP等在内的多种客户端,并且提供有多种插件来扩展自身功能。
RabbitMQ支持异步或者同步消息通信,生产者将消息发送到交换器中,消费者则从消息队列中获取消息。交换器将生产者从消息队列中解耦,避免了实际运用中消息路由的硬编码问题。RabbitMQ同时支持分布式部署,多个服务节点可以在完全不依赖外部其他服务(一些集群服务插件,比如:AWS APIs,DNS, Consul等等除外)的前提下组成一个服务集群。
2.2. Kafka
Kakfa是一个高吞吐量的发布订阅消息系统和流处理平台,类似于服务器集群中的日志系统,Kafka以主题的形式为消息流提供了持久消息存储。
Kafka中的每一个消息都包含一个键、值以及时间戳,与RabbitMQ相反,Kafka采用的是一种傻瓜代理/智能消费的模式,Kakfa只记录未读消息,相应的Kafka采取的是为所有的消息保留一定的时间窗口,同时,消费者负责各自记录自身读取消息的实际位置(.log)。因此,通过适合的客户端代码,Kafka可以以非常小的代价支持大量的消费者和数据。如图所示,Kafka本身需要借助外部服
这篇关于kafka VS Rabbit的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!