kafkarabbitmq(kafkarabbitmq 比较)

本篇文章给大家谈谈kafkarabbitmq,以及kafkarabbitmq 比较对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

rabbitmq与kafka到底用哪个好

Kafka和RabbitMq一样是通用意图消息代理,他们都是以分布式部署为目的。但是他们对消息语义模型的定义的假源羡设是非常不同的。我对"AMQP 更成熟"颤辩这个论点是持怀疑态度的。让我们用事实说话来看看用什么解决方案来解决你的问题。

a) 以下场景你比较适合使用Kafka。你有大量的事件(10万以上/秒)、你需要以分区的,顺序的,至少传递成功一次到混杂了在线和打包消费的消费者、你希望能重读消息、你能接受目前是有限的节点级别高可用或则说你并不介意通过论坛/IRC工具得到还在幼儿阶段的软件的支持。

b) 以下场景你比较适合使用RabbitMQ。你有较少的事茄裂缺件(2万以上/秒)并且需要通过复杂的路由逻辑去找到消费者、你希望消息传递是可靠的、你并不关心消息传递的顺序、你需要现在就支持集群-节点级别的高可用或则说你需要7*24小时的付费支持(当然也可以通过论坛/IRC工具)。

[img]

请问kafka和rabbitmq有啥区别啊?

kafaka和rabbitmq的最主要区别在于数据的可靠性和吞吐量上;在让核实际场景中,需要按需求取舍。rabbitmq在金融场景中经常使用,具有较高的严谨性,数据丢失的可能性更小,同裤滑脊时具备更高的实时性,基于存储的可靠性的要求存储可以采用内存或者硬盘。而kafka优势主要体现在吞吐量上,虽然可以通过策略实现数据不丢失,但从严谨性角度来讲,大不如rabbitmq;而且由于kafka保证每条胡渗消息最少送达一次,有较小的概率会出现数据重复发送的情况。

请采纳,谢谢!

聊一聊rabbitMQ和kafka的应用场景

我们知道常用的2款消息中间件是rabbitmq和kafka,他们2者都有什么各自的特点和应用场景呢?我们下面就聊一聊。

rabbitmq消息的发送,首先经过exchange,然后由exchange根据路由把消息投递到绑定的队列中,exchange有3中类型:

      fanout:完全模式,消息会投递到和exchange绑定的所以队列中,使用于多个岁哗消费者应用的场景。

      direct:直接模式,消息投递根据发送的routingkey和bindingkey完全匹配的队列中,兆手使用单消费者场景。

      topic:topic模式,消息投递模糊匹配路由规则,可以投递到多个匹配的队列中。

rabbitmq的消息可以持久化,也可以不持久化,消息消费完就被删除,不能重复消费。

rabbitmq cluster消息的存储,一个队列只能在一台机器上存储,无法实现分片存储。

kafka消息发送topic,topic可以多个乎猜行分区,同一个topic的消息可以分片保存在不同的机器上,消息持久化存储在磁盘上,一个消息可以重复消费,不用像rabbitmq一样,有几个消费者来消费这个消息,就需要几个消息队列来存储这个消息。

Kafka还是RabbitMQ?

现在的系统已经离不开消息队列,我们可以用他做异步,做解耦,做流处理,做可靠传输。市面上的消息队列也有很多,比如阿里云的oss,RocketMQ,ZeroMQ,RabbitMQ,Kafka等,甚至Java中的List也可以称为一个简单的消息队列,种类如此繁多,我们该如何选择呢?现在主流的消息队列可以分为两类,一类以kafka为代表,一类以RabbitMQ为代表,二者有很多相似的地方,也都有各自的优势。

那我们平时构建系统的时候,该选择哪种消息队列呢?这里我们将RbbitMQ与kafka做一下对比(因为他们都是spring默认集成的消息队列),以便于我们做出最优的选择。

RabbitMQ:关于rabbit的详细介绍这里不说,感兴趣的可以看我之前的文章,一句话rabbit作为传统意义上的消息队列,基于AMQP协议开发,倾向于做按各种规则的消息转发。

Kafka:关于kafka的详细介绍会在以后的文章里写,因为刚开始用,想深入了解后再写出来。kafka更倾向于一个流式管道的概念,消息从一处流向另一处,吞吐量比rabbit更高。

接下来通过俩张图来理解他俩的设计与区别。

首先来看rabbit,他通过broker来进行统一调配消息去向,生产者通过指定的规则将消息发送到broker,broker再按照规则发送给消费者进行消费,消费者方可以选择消费方式为pull或者是broker主动push,支持的消费模式也有多种,点对点,广播,正则匹配等。

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

了解了二者大体的区别以后,我们再来看具体的适用场景。

Kafka:

1.从A系统到B系统的消息没有复杂的传递规则,并且具有较高的吞吐量要求。

2.需要访问消息的历史记录的场景,因为kafak是持久化消息的,所以可以通过偏移量访问到那些已经被消费的消息(前提是磁盘空间足够,kafka没有将日志文件删除)

3.流处理的场景。处理源源不断的流式消息,比较典型的是日志的例子,将系统中源源不断生成的日志发送到kafka中。

rabbit:

1.需要对消息进册衫行更加细粒度的控制,包括一些可靠性方面的特性,比如死信队列。

2.需要多种消费模式(点对点,广播州局腔,订阅发布等)

3.消息需要通过复杂的路由到消费者。

最后是关于性能方面,众所周知,kafka的吞吐量优于rabbit,大约是100k/sec,而rabbit大约是20k/sec,但是这个不应该成为我们选择的主要原因,因为性能方面的瓶颈都是可以通过集群方案来解决的。

最后要说的是,没有最好的队列,只有最合适的队列。

参考:Understanding When to use RabbitMQ or Apache Kafka

关于kafkarabbitmq和kafkarabbitmq 比较的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表