rabbitmq每次拉取最大数量_如何在Kafka和RabbitMQ之间做出选择

Kafka和RabbitMQ都是消息系统。不能简单地说哪一个更好。选择使用哪一个,需要看你的项目需求。我们可以从下面几个方面来做一下比较。

成熟度 - 不用考虑,都很成熟

RabbitMQ和Kafka都是“成熟的”,它们都被认为是可靠而且可扩展的消息系统。RabbitMQ在2007年发布而Kafka发布时间是2011年。根据Confluent的报告,有超过1/3的世界500强企业在使用Kafka。而Zalando,WeWork,Wunderlist和Bloomberg等大企业也都在用RabbitMQ。

所以,成熟度上来看,放心使用,都是久经考验的好东西。

消息持久化 Persistence

Kafka区别于其他消息系统的一个显著特点就是,它可以持久化消息。根据配置的保存时间和大小,Kafka会保存最近一段时间的消息。默认是保留最近7天的消息,如果存储够的话,还可以保存更久。这就意味着消费者可以重复拉取消息。

RabbitMQ是阅后即焚。只要消费者消费了消息并且ack了,消息就被删除了。

有一个典型的场景,需要重新消费消息。当你的消费者程序有bug,当你修复了bug,想重新拉一下一些消息,Kafka会比较方便的支持。

消息路由 Routing

Kafka具有非常简单的路由方法。RabbitMQ支持更加复杂的方式将消息路由给消费者。

RabbitMQ有四个不同的路由选项:direct, topic, fanout 和 header exchanges。

direct,通过精确匹配routing key的方式路由。

topic,和direct类似,只不过支持通过通配符的方式匹配routing key。

fanout,可以将消息广播到绑定到该exchange的每个队列queue。

902c17bfec1ce151c895a43e982d3447.png

RabbitMQ 消息路由

Kafka比较简单。逻辑上来说,消费者和生产者按照topic的方式来通信。生产者向一个或多个topic发送消息,消费者可以消费一个或者多个topic。

消息的优先级 Message Priority

RabbitMQ支持生产者给消息加上优先级。Kafka不支持。对于RabbitMQ来说,高优先级的消费会被消费者优先消费。对于Kafka来说,消费者需要按照顺序依次消费。

消息确认 Acknowledgment

Ack是消费者确认消息已经消费的机制。RabbitMQ和Kafka都支持。

性能扩展 Scaling

提高消费速度

可以通过增加RabbitMQ来加快消费的速度。对于Kafka来说,你可以通过增加partition的数量来提高生产和消费的速度。通过增加消费者组里面的消费者的数量来加快速度。

Broker的性能扩展

Kafka比RabbitMQ更加容易水平扩展。也就通过增加机器的数量来提高吞吐量。通常RabbitMQ是通过垂直扩展,也就提高单机的CPU,Mem来提高性能。

先分享这些,后面可以再补充更多。。。

参考我的视频《[动画] 为什么我们需要消息系统 Kafka》了解什么是消息系统。


本人,@小马过河Vizit,专注于分布式系统原理和实践分享。希望利用动画生动而又准确地演示抽象的原理。

关于我的名字。小马过河Vizit,意为凡事像小马过河一样,需要自己亲自尝试、探索才能获得乐趣和新知。Vizit是指Visualize it的缩写。一图胜千言,希望可以利用动画来可视化抽象的原理。

欢迎关注,点赞! 谢谢支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值